Программирование драйверов Windows


Голубой экран смерти (BSOD)


Системное сообщение об останове системы &#8212 это появляющееся на голубом фоне сообщение, которое носит закрепившееся за ним название "Blue Screen Of Death" (BSOD). В разных версиях NT вид BSOD сообщений сильно менялся. В русифицированных версиях зачастую на экране видна абракадабра вместо текста (из-за неверной кодировки), что, однако, не должно сильно обременять разработчика. Главной информацией являются две строки, содержащие код ошибки и некоторые параметры сбоя (шестнадцатеричные числа), например:

DRIVER_IRQL_NOT_LESS_OR_EQUAL *** STOP: 000000Dl (00000000 00000002 00000000 F8B57624) *** Example.sys - address F8B57624 base at F8B57000 Datestamp 3e6da099

Сообщение код "bugcheck code", указанный в текстовой форме (DRIVER_IRQL_NOT_LESS_OR_EQUAL), его шестнадцатеричное значение (здесь 000000D1, после слова STOP) и четыре аргумента, переданные в вызове KeBugCheckEx. B зависимости от кода интерпретируется значение остальных 4-х аргументов (см. Приложение А).

Коду 0xD1 соответствует DRIVER_IRQL_NOT_LESS_OR_EQUAL. Приложение А указывает, что код 0xD1 означает ошибку, связанную с обращением к отсутствующей в физической памяти странице (page fault) на уровне IRQL равном DISPATCH_LEVEL или выше. Кроме того, при этом коде ошибки можно сказать, что четыре аргумента KeBugCheckEx означают следующее:

Arg1: Ссылочный адрес (обращение к которому вызвало сбой) 00000000 Arg2: Текущий IRQL уровень 2 Arg3: Тип доступа 0 (что означает "чтение") Arg4: Адрес инструкции, которая вызвала сбой 0xF8B57624




Начало  Назад  Вперед