Программа DebugView
Программа DebugView (рисунок 2.15) позволяет наблюдать в своем рабочем окне текст сообщений, которые во время своей работы выводит драйвер, если он использует специальные отладочные printf-подобные функции, такие как вызовы режима ядра DbgPrint в Windows NT или Win32 вызов OutputDebugString. Пример использования этих функций (а именно — DbgPrint) в программном коде драйвера режима ядра можно увидеть в следующей главе (на примере драйвера Example.sys).
Программа DebugView позволяет получать сообщения и с удаленных компьютеров по сетевым соединениям, включая Интернет, устанавливать фильтры (сообщения каких процессов следует выводить на экран), выводить сообщения в файл на жестком диске и просматривать crash dump файл. Некоторые сложности имеются лишь в получении сообщения от функций наблюдаемого драйвера, если они работают до момента запуска DebugView. В этом случае сообщения оказываются утерянными. Преодолеть эти затруднения можно при помощи программы DebugPrint Monitor, которая будет рассмотрена ниже.
Рис. 2.15 Программа DebugView |
Для просмотра сообщений, которые выдают драйверы при работе инициализационных процедур (например, DriverEntry или AddDevice), но которые загружаются при запуске системы, можно использовать следующий прием. В случае, если драйвер был инсталлирован при помощи Мастера Установки и inf файла, в результате чего драйвер виден в Панели Настроек в окне Диспетчера Устройств следует выполнить отключение устройства, после чего из системы выгрузится драйвер (в частности, отработает процедура Unload). (Заметим, кстати, что между включением и отключением можно произвести замену файла драйвера на новую версию — если это необходимо). После этого необходимо выполнить там же, в Диспетчере Устройств, включение драйвера — в русскоязычной версии Windows это действие обозначено словом "задействовать". В результате будет динамически загружен ранее отключенный драйвер, а его работа начнется с вызова процедуры DriverEntry и т.д., что позволит увидеть все диагностические сообщения для программы DebugView (разумеется, если разработчик их предусмотрел). |