BSOD 0x000000C4 — DRIVER_VERIFIER_DETECTED_VIOLATION

Это общий стоп код для ошибок обнаруженных утилитой Driver Verifier. Параметр 1 определяет тип ошибки, смысл остальных параметров зависит от параметра 1.

Параметр 1 Параметр 2 Параметр 3 Параметр 4 Причина
0x00 Текущий IRQL Тип пула 0 Драйвер попытался выделить область памяти нулевого размера
0x01 Текущий IRQL Тип пула Размер выделенной области (в байтах) Драйвер попытался выделить память выгружаемого пула при уровне IRQL>APC_LEVEL
0x02 Текущий IRQL Тип пула Размер выделенной области (в байтах) Драйвер попытался выделить память невыгружаемого пула при уровне IRQL>DISPATCH_LEVEL
0x10 Некорректный адрес 0 0 Драйвер попытался освободить память по адресу, который не возвращался после вызова выделения памяти
0x11 Текущий IRQL Тип пула Адрес пула Драйвер попытался освободить память выгружаемого пула при IRQL>APC_LEVEL
0x12 Текущий IRQL Тип пула Адрес пула Драйвер попытался освободить память невыгружаемого пула при IRQL>DISPATCH_LEVEL
0x13 или 0x14 Зарезервировано Указатель на заголовок пула Содержимое заголовка пула Драйвер попытался выполнит освобождение памяти, которая уже была освобождена
0x16 Зарезервировано Адрес пула 0 Драйвер попытался освободить память в пуле по неправильному адресу или драйвер передал неправильный параметр какой-либо функции по работе с памятью
0x30 Текущий IRQL Запрашиваемый IRQL 0 Драйвер передал неправильный параметр функции KeRaiseIrql. Параметр был или меньше текущего уровня IRQL, или больше чем HIGH_LEVEL. Возможно параметр вообще не инициализирован.
0x31 Текущий IRQL Запрашиваемый IRQL 0: новый IRQL некорректен
1: новый IRQL некорректен внутри DPC
Драйвер передал неправильный параметр функции KeLowerIrql. Параметр был или больше текущего уровня IRQL, или больше чем HIGH_LEVEL. Возможно параметр вообще не инициализирован.
0x32 Текущий IRQL Адрес спин блокировки 0 Драйвер выполнил вызов KeReleaseSpinLock на уровне IRQL отличном от DISPATCH_LEVEL
0x33 Текущий IRQL Адрес быстрого мьютекса 0 Драйвер попытался захватить быстрый мьютекс при уровне IRQL>APC_LEVEL
0x34 Текущий IRQL Адрес быстрого мьютекса 0 Драйвер попытался освободить быстрый мьютекс при уровне IRQL отличном от APC_LEVEL
0x35 Текущий IRQL Адрес спин блокировки Старый IRQL Ядро освободило спин блокировку при IRQL не равном DISPATCH_LEVEL
0x36 Текущий IRQL Номер спин блокировки Старый IRQL Ядро освободило спин блокировку добавленную в очередь при IRQL не равном DISPATCH_LEVEL
0x37 Текущий IRQL Количество отключений потока APC Ресурс Драйвер попытался захватить ресурс, но APC не были отключены
0x38 Текущий IRQL Количество отключений потока APC Ресурс Драйвер попытался освободить ресурс, но APC не были отключены
0x39 Текущий IRQL Количество отключений потока APC Мьютекс Драйвер попытался небезопасно захватить мьютекс с IRQL не равному APC_LEVEL
0x3A Текущий IRQL Количество отключений потока APC Мьютекс Драйвер попытался небезопасно освободить мьютекс с IRQL не равному APC_LEVEL
0x3C Описатель переданный функции Тип объекта 0 Драйвер выполнил вызов ObReferenceObjectByHandle с некорректным описателем
0x3D 0 0 Адрес некорректного ресурса Драйвер передал некорректный (не выровненный по границе) ресурс функции ExAcquireResourceExclusive
0x3E 0 0 0 Драйвер вызвал KeLeaveCriticalRegion для потока, который не находится в критическом регионе
0x3F Адрес объекта Новое количество ссылок на объект.-1: dereference case

1: reference case

0 Драйвер вызвал ObReferenceObject для объекта которое имеет количество ссылок равное нулю, или вызвал ObDereferenceObject для объекта количество ссылок на который равно нулю
0x40 Текущий IRQL Адрес спин блокировки 0 Драйвер вызвал KeAcquireSpinLockAtDpcLevel при IRQL DISPATCH_LEVEL
0x71 Текущий IRQL Адрес MDL Адрес процесса Драйвер выполнил вызов MmProbeAndLockProcessPages при IRQL > DISPATCH_LEVEL
0x72 Текущий IRQL Адрес MDL Адрес процесса Драйвер выполнил вызов MmProbeAndLockSelectedPages при IRQL > DISPATCH_LEVEL
0x73 Текущий IRQL В системах 32-x – младшие 32 бита физического адреса, в 64-x – 64 битный физический адрес Количество байт Драйвер вызвал MmMapIoSpace с IRQL > DISPATCH_LEVEL
0x74 Текущий IRQL Адрес MDL Режим доступа Драйвер вызвал MmMapLockedPages в режиме ядра с  IRQL > DISPATCH_LEVEL
0x75 Текущий IRQL Адрес MDL Режим доступа Драйвер вызвал MmMapLockedPages в пользовательском режиме с IRQL > APC_LEVEL
0x76 Текущий IRQL Адрес MDL Режим доступа Драйвер вызвал MmMapLockedPagesSpecifyCache в режиме ядра с IRQL > DISPATCH_LEVEL
0x77 Текущий IRQL Адрес MDL Режим доступа Драйвер вызвал MmMapLockedPagesSpecifyCache в пользовательском режиме с IRQL > APC_LEVEL
0x78 Текущий IRQL Адрес MDL 0 Драйвер вызвал MmUnlockPages при IRQL > DISPATCH_LEVEL
0x79 Текущий IRQL Неспроецированный виртуальный адрес MDL адрес Драйвер вызвал MmUnmapLockedPages в режиме ядра при IRQL > DISPATCH_LEVEL
0x7A Текущий IRQL Неспроецированный виртуальный адрес MDL адрес Драйвер вызвал MmUnmapLockedPages в пользовательском режиме при IRQL > APC_LEVEL
0x7B Текущий IRQL Неспроецированный виртуальный адрес Количество байт Драйвер вызвал MmUnmapIoSpace при IRQL > APC_LEVEL
0x7C MDL адрес MDL флаги 0 Драйвер выполнил вызов MmUnlockPages, и передал MDL, чьи страницы никогда не были успешно заблокированы
0x7D MDL адрес MDL флаги 0 Драйвер вызвал MmUnlockPages, и передал MDL, чьи страницы с невыгружаемого пула (они никогда не должны быть разблокированы)
0x7E Текущий IRQL DISPATCH_LEVEL 0 Драйвер вызвал MmAllocatePagesForMdl,MmAllocatePagesForMdlEx, или MmFreePagesFromMdl при IRQL > DISPATCH_LEVEL
0x7F Текущий IRQL MDL адрес MDL флаги Драйвер вызвал BuildMdlForNonPagedPool и передал MDL чьи страницы с выгружаемого пула
0x80 Текущий IRQL Адрес события 0 Драйвер выполнил вызов  KeSetEvent при IRQL > DISPATCH_LEVEL
0x81 MDL адрес MDL флаги 0 Драйвер выполнил вызов MmMapLockedPages.

(Необходимо использовать MmMapLockedPagesSpecifyCache , с параметром BugCheckOnFailure равным FALSE.)

0x82 MDL адрес MDL флаги 0 Драйвер вызвал MmMapLockedPagesSpecifyCache с BugCheckOnFailure равным TRUE.

(Этот параметр должен быть равен FALSE)

0x83 Начало диапазона физической памяти для проецирования Количество байтов для проецирования Первый номер страницы фрейма который не был заблокирован Драйвер выполнил вызов  MmMapIoSpace без блокирования MDL страниц. Страницы физической памяти должны быть предварительно заблокированы перед этим вызовом
0x85 MDL адрес Количество страниц предназначенных для проецирования Первый номер страницы фрейма который не был заблокирован Драйвер выполнил вызов MmMapLockedPages без блокировки MDL страниц
0x89 MDL адрес Указатель на страницу не памяти в MDL Номер страницы не памяти в MDL MDL не отмечен как “I/O”, но он содержит адрес страницы non-memory
0x91 Зарезервировано Зарезервировано Зарезервировано Драйвер переключил стеки методом, который не поддерживается системой. Единственное поддерживаемое решение для расширения стека режима ядра – это использование KeExpandKernelStackAndCallout
0xA0 (Windows Server 2003 и более поздние версии) Указатель на IRP, который выполняет запрос чтения или записи Объект устройства нижнего устройства Количество секторов, в которых обнаружена ошибка На жестком диске была обнаружена ошибка проверки контрольной суммы. Ошибка с данным параметром отображается только если опция Disk Integrity Checking включена в Driver Verifier
0xA1 (Windows Server 2003 и более поздние версии) Копия IRP пакета, который выполняет запрос чтения или записи (реальный пакет был завершен) Объект устройства нижнего устройства Количество секторов, в которых обнаружена ошибка На жестком диске была обнаружена ошибка проверки контрольной суммы сектора (асинхронно). Ошибка с данным параметром отображается только если опция Disk Integrity Checking включена в Driver Verifier
0xA2 (Windows Server 2003 и более поздние версии) Копия IRP пакета, который выполняет запрос чтения или записи (реальный пакет был завершен) Объект устройства нижнего устройства Количество секторов, в которых обнаружена ошибка Контрольная сумма CRCDISK копии неверна. Это может быть ошибка выгрузки (загрузки) страниц памяти в файл подкачки. Ошибка с данным параметром отображается только если опция Disk Integrity Checking включена в Driver Verifier
0xB0 (Windows Vista и более поздние версии) MDL адрес MDL флаги Некорректные флаги MDL Драйвер вызвал MmProbeAndLockPages для MDL с некорректными флагами. Например, драйвер передал MDL созданный MmBuildMdlForNonPagedPool функции MmProbeAndLockPages
0xB1 (Windows Vista и более поздние версии) MDL адрес MDL флаги Некорректные флаги MDL Драйвер вызвал MmProbeAndLockProcessPages для MDL с некорректными флагами. Например, драйвер передал MDL, созданный MmBuildMdlForNonPagedPool функции MmProbeAndLockProcessPages
0xB2 (Windows Vista и более старшие версии) MDL адрес MDL флаги Некорректные флаги MDL Драйвер вызвал MmMapLockedPages для MDL с неправильными флагами. Например, драйвер передал MDL, который уже спроецированный системному адресу, или который не был заблокирован, в функцию MmMapLockedPages
0xB3 (Windows Vista и более старшие версии) MDL адрес MDL флаги Некорректные флаги MDL Драйвер вызвал MmMapLockedPages для MDL с неправильными флагами. Например, драйвер передал  MDL, который не был заблокирован функции MmMapLockedPages
0xB4 (Windows Vista и более старшие версии) MDL адрес MDL флаги Неожиданный частичный флаг MDL Драйвер вызвал MmUnlockPages для частичного MDL. Частичный MDL может быть создан функцией IoBuildPartialMdl
0xC0 (Windows Vista и более старшие версии) Адрес пакета IRP Зарезервировано Зарезервировано Драйвер вызвал IoCallDriver с запрещенными прерываниями
0xC1 (Windows Vista и более старшие версии) Адрес процедуры драйвера dispatch Зарезервировано Зарезервировано Произошел возврат с процедуры dispatch драйвера с отключенными прерываниями
0xC2 (Windows Vista и более старшие версии) Зарезервировано Зарезервировано Зарезервировано Драйвер вызвал  процедуру Fast I/O dispatch после того как прерывания были отключены
0xC3 (Windows Vista и более старшие версии) Адрес процедуры драйвера Fast I/O dispatch Зарезервировано Зарезервировано Произошел выход из процедуры Fast I/O dispatch с отключенными прерываниями
0xC5 (Windows Vista и более старшие версии) Адрес процедуры драйвера dispatch Количество отключений APC текущего потока Количество отключений APC текущего потока до вызова процедуры драйвера dispatch Процедура dispatch драйвера изменила количество отключений APC потока.

Количество отключений APC уменьшается каждый раз вместе с вызовом KeEnterCriticalRegion,FsRtlEnterFileSystem, или захватом мьютекса.

Количество отключений APC увеличивается каждый раз когда драйвер вызывает KeLeaveCriticalRegion, KeReleaseMutex, или FsRtlExitFileSystem.

Потому что вызова должны соответствовать друг другу, значение количества отключений APC должно быть равным 0, когда происходит выход из потока

0xC6 (Windows Vista и более старшие версии) Адрес dispatch процедуры драйвера Fast I/O Количество отключений APC текущего потока Количество отключений APC текущего потока до вызова процедуры Fast I/O драйвера dispatch I/O dispatch процедура драйвера изменила количество отключений APC потока.

Количество отключений APC уменьшается каждый раз вместе с вызовом KeEnterCriticalRegion,FsRtlEnterFileSystem, или захватом мьютекса.

Количество отключений APC увеличивается каждый раз когда драйвер вызывает KeLeaveCriticalRegion, KeReleaseMutex, или FsRtlExitFileSystem.

Потому что вызова должны соответствовать друг другу, значение количества отключений APC должно быть равным 0, когда происходит выход из потока

0xCA (Windows Vista и более старшие версии) Адрес списка lookaside Зарезервировано Зарезервировано Драйвер выполнил попытку реиницализации списка lookaside
0xCB (Windows Vista и более старшие версии) Адрес списка lookaside Зарезервировано Зарезервировано Драйвер выполнил попытку удаления неинициализированного списка lookaside
0xCC (Windows Vista и более старшие версии) Адрес списка lookaside Начальный адрес выделенной памяти пула Размер выделенной памяти пула Драйвер выполнил попытку освобождения блока памяти, который содержит активный список lookaside
0xCD (Windows Vista и более старшие версии) Адрес списка lookaside Размер блока, указанный вызывающим кодом Минимально поддерживаемый размер блока Драйвер выполнил попытку создать lookaside список в выделенном блоке памяти, который слишком мал для этого
0xD0 (Windows Vista и более старшие версии) Адрес структуры ERESOURCE Зарезервировано Зарезервировано Драйвер выполнил попытку реинициализации структуры ERESOURCE
0xD1 (Windows Vista и более старшие версии) Адрес структуры ERESOURCE Зарезервировано Зарезервировано Драйвер выполнил попытку удаления неинициализированной структуры ERESOURCE
0xD2 (Windows Vista и более старшие версии) Адрес структуры ERESOURCE Начальный адрес выделенной памяти пула Размер выделенной памяти пула Драйвер выполнил попытку освобождения памяти пула, которая содержит активную структуру ERESOURCE
0xD5 (Windows Vista и более старшие версии) Адрес структуры IO_REMOVE_LOCK, созданной проверяемой версией сборки драйвера Текущий тег IoReleaseRemoveLock Зарезервировано

The current IoReleaseRemoveLock tag does not match the previous IoAcquireRemoveLock tag. If the driver calling IoReleaseRemoveLock is not in a checked build, Parameter 2 is the address of the shadow IO_REMOVE_LOCK structure created by Driver Verifier on behalf of the driver. In this case, the address of the IO_REMOVE_LOCK structure used by the driver is not used at all, because Driver Verifier is replacing the lock address for all the remove lock APIs. A bug check with this parameter occurs only when the I/O Verification option of Driver Verifier is active.

0xD6 (Windows Vista и более старшие версии) Адрес структуры IO_REMOVE_LOCK, созданной проверяемой версией сборки драйвера Тег, который не соответствует предыдущему
IoAcquireRemoveLock тегу
Предыдущий IoAcquireRemoveLock тег The current IoReleaseRemoveLockAndWait tag does not match the previous IoAcquireRemoveLock tag. If the driver calling IoReleaseRemoveLock is not a checked build, Parameter 2 is the address of the shadow IO_REMOVE_LOCK structure created by Driver Verifier on behalf of the driver. In this case, the address of the IO_REMOVE_LOCK structure used by the driver is not used at all, because Driver Verifier is replacing the lock address for all the remove lock APIs. A bug check with this parameter occurs only when the I/O Verification option of Driver Verifier is active.
0xD7 (Windows Vista и более старшие версии) Адрес структуры IO_REMOVE_LOCK, которая используется во внутренних целях утилитой Driver Verifier Адрес структуры Remove Lock, указанный драйвером Зарезервировано A Remove Lock cannot be re-initialized, even after it calls IoReleaseRemoveLockAndWait, because other threads might still be using that lock (by callingIoAcquireRemoveLock). The driver should allocate the Remove Lock inside its device extension, and initialize it a single time. The lock will be deleted together with the device extension.
0xDA (Windows Vista и более старшие версии) Стартовый адрес драйвера Адрес функции обратного вызова WMI внутри драйвера Зарезервировано Была выполнена попытка выгрузить драйвер, который не отменил регистрацию функции обратного вызова WMI
0xDB (Windows Vista и более старшие версии) Адрес объекта устройства Зарезервировано Зарезервировано Была выполнена попытка удаления объекта устройства, для которого не была выполнена отмена регистрации в WMI
0xDC (Windows Vista и более старшие версии) Адрес вызова EtwRegister Стартовый адрес выгруженного драйвера Для Windows 8 и более поздних версий этот параметр содержит значение ETW RegHandle Была выполнена попытка выгрузки драйвера без вызова EtwUnregister
0xDF (Windows 7 и более старшие версии) Адрес объекта синхронизации Объект синхронизации находится в адресному пространстве сессии. Это не является допустимым
0xE0 (Windows Vista и более старшие версии) Адрес памяти пользовательского режима, который используется как параметр Размер (в байтах) диапазона адресов, который используется как параметр Зарезервировано Был выполнен вызов к функции ядра системы, а в качестве параметра был передан адрес памяти пользовательского режима
0xE1 (Windows Vista и более старшие версии) Адрес объекта синхронизации Зарезервировано Зарезервировано Был обнаружен объект синхронизации с адресом в памяти, который является неправильным или выгружаемым
0xE2 (Windows Vista и более старшие версии) Адрес пакета IRP В пакете IRP есть адрес памяти пользовательского режима Зарезервировано Был обнаружен IRP пакет с Irp->RequestorMode установленным в KernelMode, имеющий одно из полей с адресом из пользовательского режима
0xE3 (Windows Vista и более старшие версии) Адрес вызова API Адрес пользовательского режима, который использовался в качестве параметра Зарезервировано Драйвер выполнил вызов к одной из функций ZwXxx ядра с адресом памяти из user mode в качестве параметра
0xE4 (Windows Vista и более старшие версии) Адрес вызова API Адрес неправильно заполненной структуры UNICODE_STRING Зарезервировано Драйвер выполнил вызов к одной из функций ZwXxx ядра с неправильно заполненной структурой UNICODE_STRING в качестве параметра
0xE5 (Windows Vista и более старшие версии) Текущий IRQL Зарезервировано Зарезервировано Был выполнен вызов одной из функций ядра при неправильном уровне IRQL
0xEA (Windows Vista и более старшие версии) Текущий IRQL Счетчик отключений APC Адрес pushlock Драйвер выполнил попытку захватить pushlock в то время когда APC были разрешены
0xEB (Windows Vista и более старшие версии) Текущий IRQL Счетчик отключений APC Адрес pushlock Драйвер выполнил попытку освободить pushlock в то время когда APC были разрешены
0xF0 (Windows Vista и более старшие версии) Адрес буфера получателя Адрес буфера источника Количество байтов, которые должны были быть скопированы Драйвер вызвал функцию memcpy с перекрывающимися адресами буферов источника и получателя
0xF5 (Windows Vista и более старшие версии) Адрес NULL описателя Тип объекта Зарезервировано Драйвер передал NULL описатель ObReferenceObjectByHandle
0xF6 (Windows Vista и более старшие версии) Значение описателя, к которому было выполнено обращение Адрес текущего процесса Адрес кода внутри драйвера, который выполнил неправильное обращение Драйвер попытался обратиться к описателю пользовательского режима как к описателю режиму ядра
0xF7 (Windows 7 и более старшие версии) Значение описателя, указанное вызывающим кодом Тип объекта, указанный вызывающим кодом Тип доступа, указанный вызывающим кодом A driver is attempting a user-mode reference for a kernel handle in the context of the system process
0xFA (Windows 7 и более старшие версии) Адрес процедуры завершения Значение IRQL перед вызовом процедуры завершения Текущий IRQL, после вызова процедуру завершения The IRP completion routine returned at an IRQL that was different from the IRQL the routine was called at
0xFB (Windows 7 и более старшие версии) Адрес процедуры завершения Счетчик отключений APC текущего потока The thread’s APC disable count before it calls the IRP completion routine The thread’s APC disable count was changed by the driver’s IRP completion routine.

The APC disable count is decremented each time a driver calls KeEnterCriticalRegion,FsRtlEnterFileSystem, or acquires a mutex.

The APC disable count is incremented each time a driver calls KeLeaveCriticalRegion, KeReleaseMutex, or FsRtlExitFileSystem.

Because these calls should always be in pairs, the APC disable count should be zero whenever a thread is exited. A negative value indicates that a driver has disabled APC calls without re-enabling them. A positive value indicates that the reverse is true.

0x105 (Windows 7 и более старшие версии) Адрес IRP Драйвер использует ExFreePool вместо IoFreeIrp для освобождения IRP
0x10A (Windows 7 и более старшие версии) The driver attempts to charge pool quota to the Idle process
0x10B (Windows 7 и более старшие версии) The driver attempts to charge pool quota from a DPC routine. This is incorrect because the current process context is undefined
0x110 (Windows 7 и более старшие версии) Address of the Interrupt Service Routine Address of the extended context that was saved before it executed the ISR Address of the extended context was saved after it executed the ISR The interrupt service routine (ISR) for the driver has corrupted the extended thread context.
0x115 (Windows 7 и более старшие версии) Адрес потока, который несет ответственность за перегрузку системы, которая могла зависнуть Driver Verifier detected that the system has taken longer than 20 minutes and shutdown is not complete.
0x11A (Windows 7 и более старшие версии) Текущий IRQL Драйвер выполнил вызов KeEnterCriticalRegion при IRQL > APC_LEVEL
0x11B (Windows 7 и более старшие версии) Текущий IRQL Драйвер выполнил вызов KeLeaveCriticalRegion при IRQL > APC_LEVEL
0x120 (Windows 7 и более старшие версии) Адрес значения IRQL Адрес объекта ожидания Адрес значения таймаута Поток выполняет ожидание при IRQL > DISPATCH_LEVEL. Код, который выполнил вызов KeWaitForSingleObject или KeWaitForMultipleObjects должен выполняться при IRQL
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: