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% работы по написанию отладчика, а заодно и с этим частично будет решен вопрос о захвате всего, что выводится на экран компьютера (минуя защиту от копирования). Вот так-то…
Pavia Читал, читал. В спецификации на PCI шину 2.2 PROFi насчет нелинейности в курсе.. к сожалению...
Great PS: выяснить про бит ... -Prefetchable Реально в Radeon и GeForce используется, и именно по нему можно найти видеопамять. В Matrox (тестил G200) и S3 к сожаланию там 0 , хотя по спецификации должен быть 1 . И еще, ВИДЕОТЮНЕР - одна и самых больших проблем - у него память такая (Connexant), что после мепирования (а ее можно замепировать посчитав что это VGA) и обращения к ней комп зависает аппаратно ВОТ, а код класса устройства совпадает с кодом VGA Adapter. Пока копаю. Возможность переводить в линейное адресное пространство видеопамять СУЩЕСТВУЕТ поскольку есть DirectDraw, более того и под Vistoй. И самое интересное что драйвер дисплея dll посылает запросы к драйверу видеопорта, на перевод в указанный режим работы видеопамяти, но ест-но они нестандартны, но разве это остановит
Можно по подробней плз как? Кстати, а в диспетчер устройств -> видеоадаптеры -> %модельвидеокарты% -> вкладка "ресурсы" -> строка "диапазон памяти" --- разве не есть буфер??
Antonios Во превых посмотрели бы какого года сей пост... вы вижу любитель некротем ) А по существу - Не есть. Если не верите - берете и проверяете, а потом читаете все об адресах на шине (PCIе как пример) и для чего они служат.
Значит любитель некротем ) Проверял.... наткнулся на синий экран смерти А вот здесь поподробней - мож что посоветуете, на чем сами учились?
Antonios Прикол в том, что вы обратились к памяти, которой как бы нет - вот и получили синий экран ) Ну оно и понятно. Потому, что это были адреса на шине, на которой находится видеокарта. Могу посоветовать вам вначале научится работать с шиной PCI (да, без Express вначале). Перечислите все устройства подключенные к шине, выведите все параметры этих устройств. Для начала этого хватит, чтоб понять , что к чему. Как работать с PCI - на этом форуме уже обсуждалось, и в гугле находится. Вы должны понять, как вообще идет работа с устройствами (выж этого хотели, я так понимаю).