Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Содержимое экрана Dos-приложения в WinXP |
Посл.ответ | Сообщение |
|
Создано: 25 ноября 2006 13:16 · Личное сообщение · #1 Как можно получить содержимое экрана дос приложения, работающего в полноэкранном режиме в WinXP. Дос приложения в WinXP выполняются в подсистеме VDM (ntvdm.exe). Хотелось бы еще узнать по больше про принцип работы данной подсистемы. Есть ли у нее место где храниться видео памямять дос-приложения, либо она просто отлавливает все запросы и прерывания и вызывает 32 разрядные функции для выполнения задачи. Либо она вызывает 32 разрядные функции для вывода в консоль и все данные уже обрабатываются GDI??? |
|
Создано: 25 ноября 2006 16:24 · Личное сообщение · #2 |
|
Создано: 25 ноября 2006 23:15 · Личное сообщение · #3 porosenok пишет: Есть ли у нее место где храниться видео памямять дос-приложения, Есть конечно. Недавно проверял старую прогу - в текстовом режиме по адресу B800:0 лежит буфер экрана, как это и было во времена чистого ДОС. Цепляешь ольгу к ntvdm.exe и смотришь, где это в самом ХП. Инфу по ntvdm.exe ищи на wasm.ru |
|
Создано: 26 ноября 2006 02:09 · Личное сообщение · #4 |
|
Создано: 26 ноября 2006 02:10 · Личное сообщение · #5 |
|
Создано: 27 ноября 2006 09:58 · Личное сообщение · #6 |
|
Создано: 27 ноября 2006 11:03 · Личное сообщение · #7 porosenok пишет: Искал я в Ольге место в ntvdm, где может быть спроецирована видео память, но так и не нашел Не думаю что ты найдёшь буфер.... Весь газенваген с прерываниями эмулируется, и просто так вряд ли храниться. В конце концов всё выводится в console window используя API.... так что, может тебе попробовать перехватом? |
|
Создано: 29 ноября 2006 03:42 · Личное сообщение · #8 |
|
Создано: 30 ноября 2006 04:26 · Личное сообщение · #9 |
|
Создано: 30 ноября 2006 07:14 · Личное сообщение · #10 |
|
Создано: 30 ноября 2006 11:56 · Личное сообщение · #11 tundra37 пишет: s0larian пишет: Не думаю что ты найдёшь буфер.... Да блин, а что посмотреть долго. Там он и хранится - по адресу B8000 и т.д. Соответственно графический по A0000. Развели демагогию Я прекрасно это знаю. Меня интересует не работа в Досе с памятью (видео буфером). Меня интересует можноли из под виндовс найти этот видео буфер и прочитать его содержимое. Содержимое окна консольного приложения нормально читается с помощью ReadConsoleOutput, это я знаю. Есть даже функци AttachConsole для подключения к любому процессу, но для нее не хватает прав. Вот и хотел побольше узнать о способе эмуляции доса в NT |
|
Создано: 30 ноября 2006 20:44 · Личное сообщение · #12 |
|
Создано: 01 декабря 2006 00:21 · Личное сообщение · #13 |
|
Создано: 02 декабря 2006 11:58 · Личное сообщение · #14 tundra37 пишет: Не, ну все нужно разжевать. Подцепи олли к ntvdm.exe и посмотри ее адрес B8000 - в памяти ntvdm.exe Что собственно неудивительно - логично один и тот же адрес сделать. Про права не знаю - админ может ее читать. Ага прям так вот лежит и ждет. Нет там ничего, одни нули. С чего вдруг решил, что будет именно там??? |
|
Создано: 04 декабря 2006 23:01 · Личное сообщение · #15 porosenok пишет: С чего вдруг решил, что будет именно там??? Я просто посмотрел. Не имею обыкновения непроверенные сведения сообщать. Нули естественно там будут, если у тебя не текстовый режим. В этом случае адрес видео-буфера A0000, а в B8000 будет середина(если я не вру) второй видео-страницы. Это я не проверял Для ясности : я не думал, что будет так просто и вызвав debug.exe(он автоматом текстовый режим делает) заполнил верхнюю строчку экрана. Потом выдал команду d b800:0 и поискал эти хексы в памяти ntvdm.exe Нужно не только уметь давить на клавиши и читать, но еще и немного думать |
|
Создано: 05 декабря 2006 00:02 · Личное сообщение · #16 |
eXeL@B —› Программирование —› Содержимое экрана Dos-приложения в WinXP |