Данная ошибка означает, что драйвер попытался обратиться к странице памяти, выгруженной на жесткий диск, при слишком высоком уровне IRQL.
Анализ ошибки – один из самых несложных. Обычно, операционная система сама находит драйвер, который привел к краху и выводит строку с именем драйвера, как показано на изображении ниже. Вы можете сами сгенерировать подобный крах системы с помощью NotMyFault и увидеть, что анализ причины обычно не является проблемой.
Параметры стоп-кода приведены в таблице ниже.
Параметр | Описание |
Arg1 | Адрес памяти по которому было выполнено обращение |
Arg2 | Уровень IRQL |
Arg3 | Тип операции: 0 – чтение, 1 – запись, 8 – выполнение. |
Arg4 | Адрес инструкции в памяти, которая выполняет обращение к |
Дополнительное описание
У этой ошибки есть следующая особенность — она может появляться, а может и нет. Давайте рассмотрим почему так происходит.
Драйвер режима ядра может использовать два типа памяти:
- выгружаемую (paged pool)
- невыгружаемую (non-paged pool)
«Выгружаемая» означает память, которая может быть выгружена операционной системой на жесткий диск. Это происходит тогда, когда системе не хватает памяти и она для ее «расширения» использует файл подкачки, то есть жесткий диск.
«Невыгружаемая» означает, что память не может быть выгружена. Такая память используется операционной системой и драйверами. Вы можете увидеть оба типа этой памяти в диспетчере задач.
Теперь давайте рассмотрим почему возникновение этой ошибки является произвольным. Рассмотрим ситуацию А.
Ситуация А.
Код драйвера выполняется на уровне IRQL>=DISPATCH_LEVEL и выполняет обращение к выгружаемой памяти. Страницы выгружаемой памяти находятся на момент обращения в ОЗУ и обращение происходит без каких-либо проблем. То есть некорректный код, нормально работает.
Ситуация B.
Выполняется тот же самый код, что и в ситуации А, но диспетчер памяти определяет, что на момент обращения, страница памяти выгружена на жесткий диск и ему необходимо выполнить загрузку этой страницы в память. Но эта операция выполняется при IRQL< DISPATCH_LEVEL, соответственно она не может прервать выполнение кода драйвера. Возникает тупиковая ситуация, выходом из которой является генерация системой BSOD с рассматриваемым кодом ошибки.
Причины ошибки
Основная причина – это ошибки в драйвере допущенные программистами, также причиной может быть сбойная память, что менее вероятно.
Способы устранения
Если не вышло самостоятельно устранить проблему, создайте тему на форуме, постараемся разобраться.