Работа с графикой в PM

Тема в разделе "WASM.OS.DEVEL", создана пользователем MegaI2, 17 сен 2007.

  1. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Great
    Pavia

    Только не меняй видеокарточку на которой работаешь :) Иначе твой код будет в ауте ...
    История не стоит на месте, и методы, работающие раньше (IOCTL_VIDEO_MAP_VIDEO_MEMORY и IOCTL_VIDEO_SHARE_VIDEO_MEMORY в Висте их нет в помине) уже не дают доступ к экрану. Даже если использовать PCI конфигурационную область, и найти физический адрес начала видеопамяти, и мепировать ее, все равно не получится вывести на экран, поскольку видеопамять уже не линейна как раньше. Кстати, еще вдобавок, поскольку отладчик может перехватить управление в контектсте любого потока, то ожидать, что модули win2k.sys и драйвер дисплея окажутся мепированы в памяти (ведь это лишь только подсистема Windows, точно такая же как и POSIX и OS2 и любая другая) не представляется возможным. Про минидрайвер речи не идет, но на сегодняшний день, только DrirectDraw может обеспечит вывод на экран, а этот самый DirectDraw находится в драйвере дисплея (тот который dll). Кстати, вывод на экран это основной камень в огород SoftICE, Syser, которые не могут выводить на экран на современных видеокарточках. И необходимость во втором компьютере при отладке сводится именно к этой основной причине. Т.о. решения вопроса о выводе на экран - это 99.9% работы по написанию отладчика, а заодно и с этим частично будет решен вопрос о захвате всего, что выводится на экран компьютера (минуя защиту от копирования). Вот так-то…
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Pavia
    Читал, читал. В спецификации на PCI шину 2.2

    PROFi
    насчет нелинейности в курсе.. к сожалению...
     
  3. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Great

    PS: выяснить про бит ... -Prefetchable Реально в Radeon и GeForce используется, и именно по нему можно найти видеопамять.
    В Matrox (тестил G200) и S3 к сожаланию там 0 , хотя по спецификации должен быть 1 :).

    И еще, ВИДЕОТЮНЕР - одна и самых больших проблем - у него память такая (Connexant), что после мепирования (а ее можно замепировать посчитав что это VGA) и обращения к ней комп зависает аппаратно ВОТ, а код класса устройства совпадает с кодом VGA Adapter.

    Пока копаю. Возможность переводить в линейное адресное пространство видеопамять СУЩЕСТВУЕТ поскольку есть DirectDraw, более того и под Vistoй. И самое интересное что драйвер дисплея dll посылает запросы к драйверу видеопорта, на перевод в указанный режим работы видеопамяти, но ест-но они нестандартны, но разве это остановит :)
     
  4. Antonios

    Antonios New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2010
    Сообщения:
    10
    Можно по подробней плз как?

    Кстати, а в диспетчер устройств -> видеоадаптеры -> %модельвидеокарты% -> вкладка "ресурсы" -> строка "диапазон памяти" --- разве не есть буфер??
     
  5. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Antonios
    Во превых посмотрели бы какого года сей пост... вы вижу любитель некротем )
    А по существу -
    Не есть.
    Если не верите - берете и проверяете, а потом читаете все об адресах на шине (PCIе как пример) и для чего они служат.
     
  6. Antonios

    Antonios New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2010
    Сообщения:
    10
    Значит любитель некротем :))

    Проверял.... наткнулся на синий экран смерти

    А вот здесь поподробней - мож что посоветуете, на чем сами учились?
     
  7. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Antonios
    Прикол в том, что вы обратились к памяти, которой как бы нет - вот и получили синий экран ) Ну оно и понятно.
    Потому, что это были адреса на шине, на которой находится видеокарта.
    Могу посоветовать вам вначале научится работать с шиной PCI (да, без Express вначале). Перечислите все устройства подключенные к шине, выведите все параметры этих устройств. Для начала этого хватит, чтоб понять , что к чему.
    Как работать с PCI - на этом форуме уже обсуждалось, и в гугле находится. Вы должны понять, как вообще идет работа с устройствами (выж этого хотели, я так понимаю).