Проверка 0xA ошибок: IRQL_NOT_LESS_OR_EQUAL

Проверка ошибок IRQL_NOT_LESS_OR_EQUAL имеет значение 0x0000000A. Эта ошибка проверка указывает, что Microsoft Windows или драйвер в режиме ядра обращается к выгружаемой памяти по недопустимому адресу на уровне запроса прерывания (IRQL). Обычно причиной является неправильный указатель или проблема с возможностью страницы.

Важно!

Эта статья предназначена для программистов. Если вы являетесь клиентом, который получил код ошибки синего экрана во время работы с компьютером, см. статью Устранение ошибок синего экрана.

параметры IRQL_NOT_LESS_OR_EQUAL

Параметр Описание
1 Адрес виртуальной памяти, к которому не удалось получить доступ.

Используйте !pool на этом адресе, чтобы узнать, является ли он выстраивным пулом. Другие команды, которые могут быть полезны при сборе сведений о сбое: !pte, !address и ln (список ближайших символов).
2 IRQL во время сбоя.

Значения.
2 — irQL был DISPATCH_LEVEL на момент сбоя.
3 Битовое поле, описывающее операцию, вызвавшей ошибку. Обратите внимание, что бит 3 доступен только для наборов микросхем, поддерживающих этот уровень отчетности.

Бит 0 значений:
0 — операция чтения
1. Операция записи

Бит 3 значения:
0 — не операция выполнения
1. Выполнение операции

Объединенные значения битов 0 и 3:
0x0 — ошибка при попытке чтения из адреса в параметре 1
0x1 — ошибка при попытке записи на адрес в параметре 1
0x8 — ошибка при попытке ВЫПОЛНИТЬ код из адреса в параметре 1

Это значение вызвано следующими причинами:
  • Вызов функции, которая не может быть вызвана в DISPATCH_LEVEL при DISPATCH_LEVEL.
  • Забыв освободить спин-блокировку.
  • Пометка кода как страничного, если он должен быть нестранимым. Например, если код получает спин-блокировку или вызывается в отложенном вызове процедуры.
4 Указатель инструкции на момент сбоя.

Используйте команду ln (Список ближайших символов) на этом адресе, чтобы увидеть имя функции.

Причина

Эта ошибка проверка вызвана драйверами устройств в режиме ядра, которые используют неправильные адреса.

Эта ошибка проверка указывает на то, что была предпринята попытка получить доступ к недопустимому адресу на уровне запроса на прерывание (IRQL). Причиной является либо неправильный указатель памяти, либо проблема с возможностью страницы с кодом драйвера устройства.

Ниже приведены общие рекомендации, которые можно использовать для классификации типов ошибок кода, вызвавших ошибку проверка.

  • Если параметр 1 меньше 0x1000, проблема, скорее всего, связана с разыменовкой указателя NULL.

  • Если !pool сообщает, что параметр 1 является выстраивным пулом (или другими типами страничной памяти), значение IRQL слишком велико для доступа к этим данным. Запустите на более низком уровне IRQL или выделите данные в невыгваченном пуле.

  • Если параметр 3 указывает, что ошибка проверка была попытка выполнить страничный код, то irQL слишком высок для вызова этой функции. Выполните на более низком irQL или не помечайте код как страничный.

  • Это может быть неправильный указатель, вызванный использованием после свободного или битового переворачивания. Проверьте допустимость параметра 1 с помощью !pte, !address и ln (список ближайших символов).

Решение

Если отладчик ядра доступен, получите трассировку стека. Начните с запуска расширения отладчика !analyze, чтобы отобразить сведения об ошибке проверка. Расширение !analyze может быть полезно для определения первопричины. Затем введите одну из команд k* (обратная трассировка стека отображения), чтобы просмотреть стек вызовов.

Сбор сведений

Проверьте имя драйвера, если оно указано на синем экране.

Проверьте системный вход в Просмотр событий на наличие других сообщений об ошибках, которые могут помочь определить устройство или драйвер, вызывающий ошибку. Найдите критические ошибки в системном журнале, которые произошли в тот же период времени, что и на синем экране.

Средство проверки драйверов

Средство проверки драйверов — это средство, которое выполняется в режиме реального времени для проверки поведения драйверов. Например, средство проверки драйверов проверяет использование ресурсов памяти, таких как пулы памяти. Если он обнаруживает ошибки при выполнении кода драйвера, он заранее создает исключение, чтобы обеспечить дальнейшее изучение этой части кода драйвера. Диспетчер проверки драйверов встроен в Windows и доступен на всех компьютерах с Windows.

Чтобы запустить диспетчер проверки драйверов, введите verifier в командной строке. Вы можете настроить драйверы для проверки. Код, который проверяет драйверы, добавляет дополнительные затраты при выполнении, поэтому старайтесь проверить минимально возможное количество драйверов. Дополнительные сведения см. в разделе Средство проверки драйверов.

В следующем коде показан пример отладки:

kd> .bugcheck       [Lists bug check data.]
Bugcheck code 0000000a
Arguments 00000000 0000001c 00000000 00000000

kd> kb [Lists the stack trace.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> kv [Lists the trap frames.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint (FPO: [0,0,0])
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256 (FPO: [0,0] TrapFrame @ 8013eee8)
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> .trap 8013eee8 [Gets the registers for the trap frame at the time of the fault.]
eax=dec80201 ebx=ffdff420 ecx=8013c71c edx=000003f8 esi=00000000 edi=87038e10
eip=00000000 esp=8013ef5c ebp=8013ef64 iopl=0         nv up ei pl nz na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010202
ErrCode = 00000000
00000000 ???????????????    [The current instruction pointer is NULL.]

kd> kb       [Gives the stack trace before the fault.]
ChildEBP RetAddr  Args to Child
8013ef68 fe551aa1 ff690268 00000002 fe5620d2 NT!_DbgBreakPoint
8013ef74 fe5620d2 fe5620da ff690268 80404690
NDIS!_EthFilterIndicateReceiveComplete+0x31
8013ef64 00000246 fe551aa1 ff690268 00000002 elnkii!_ElnkiiRcvInterruptDpc+0x1d0

Комментарии

Ошибка, которая вызывает эту ошибку, проверка обычно возникает после установки неисправного драйвера устройства, системной службы или BIOS.

При возникновении ошибки проверка 0xA при обновлении до более новой версии Windows эта ошибка может быть вызвана драйвером устройства, системной службой, сканером вирусов или средством резервного копирования, несовместимым с новой версией.

Устранение проблем с неисправным оборудованием: Если оборудование было добавлено в систему недавно, удалите его, чтобы проверить, не повторится ли ошибка. Если существующее оборудование завершилось сбоем, удалите или замените неисправный компонент. Запустите аппаратные диагностика, предоставляемые производителем системы. Дополнительные сведения об этих процедурах см. в руководстве владельца компьютера.

Устранение проблемы с неисправной системной службой: Отключите службу и подтвердите, устраните ли это ошибку. Если это так, обратитесь к производителю системной службы по поводу возможного обновления. Если ошибка возникает во время запуска системы, изучите варианты восстановления Windows. Дополнительные сведения см. в разделе Параметры восстановления в Windows 10.

Устранение проблемы с антивирусным программным обеспечением: Отключите программу и убедитесь, что это устраняет ошибку. Если это так, обратитесь к производителю программы по поводу возможного обновления.

Общие сведения об устранении неполадок с проверками ошибок см. в разделе Данные синего экрана.

См. также раздел

Справочник по коду проверка ошибок