Анализ проблем верификации драйверов Windows - page 2

Н.Г. Ершов
,
Н.Ю. Рязанова
2
При отладке драйверов необходимо их тщательно тестировать и
верифицировать. В состав операционных систем Microsoft Windows
XP и созданных позднее для выявления проблемных драйверов
включен Диспетчер проверки драйверов Microsoft Driver Verifier.exe
[1]. Утилита Driver Verifier проверяет драйверы режима ядра и гра-
фические драйверы для выявления недопустимых вызовов функций
или действий, способных аварийно завершить работу Windows.
Од-
нако
драйверы, в которых могут возникнуть взаимоблокировки,
очень сложно выявить. Замечено, что на практике взаимоблокиров-
ки возникают не мгновенно, и система реагирует на них не сразу.
Поэтому после возникновения ошибки блокировки функция драй-
вера может еще какое-то время выполнять критические действия. В
результате система диагностики укажет на последние действия
функций установленного в системе драйвера, причем это может
быть даже не драйвер, работа которого анализируется. В результате
участки кода, в которых происходит взаимоблокировка, определены
не будут. Кроме того, при крахе системы в принципе на диск долж-
ны записываться результаты ошибочных действий, однако содержа-
ние и информативность этих сообщений можно оценить только по-
сле краха системы.
Команда
!verifier
отладчика ядра и средство Verifier.exe показы-
вают текущие параметры проверки драйверов и статистику в режиме
реального времени. Наиболее распространенные системные ошибки,
возникающие при проверке драйверов:
IRQL_NOT_LESS_OR_EQUAL 0xA
PAGE_FAULT_IN_NONPAGED_AREA 0x50
PAGE_FAULT_IN_NONPAGED_AREA 0x50
ATTEMPTED_WRITE_TO_READONLY_MEMORY 0xBE
SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
0xC1
DRIVER_VERIFIER_DETECTED_VIOLATION 0xC4
DRIVER_CAUGHT_MODIFYING_FREED_POOL 0xC6
TIMER_OR_DPC_INVALID 0xC7
DRIVER_VERIFIER_IOMANAGER_VIOLATION 0xC9
В материалах фирмы Microsoft даются рекомендации по верифи-
кации драйверов режима ядра. Однако конкретные ситуации и при-
меры их отладки не приводятся. Анализ различных ситуаций, спо-
собных привести к краху системы, показывает, что не всегда можно
1 3,4,5,6,7,8,9,10,11,...12
Powered by FlippingBook