Поделиться через


0x10D проверки ошибок: WDF_VIOLATION

Проверка ошибок WDF_VIOLATION имеет значение 0x0000010D. Это означает, что Kernel-Mode Driver Framework (KMDF) обнаружил, что Windows обнаружила ошибку в драйвере на основе платформы.

Важно!

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

Параметры WDF_VIOLATION

Параметр 1 указывает конкретный код ошибки проверка ошибки. Параметр 4 зарезервирован.

Параметр 1 Параметр 2 Параметр 3 Причина ошибки

0x1

Указатель на структуру WDF_POWER_ROUTINE_TIMED_OUT_DATA

Зарезервировано

Время ожидания драйвера на основе платформы истекло во время работы питания. Обычно это означает, что стек устройств не задал бит DO_POWER_PAGABLE и драйвер попытался выполнить операцию с возможностью страницы после выключения стека устройств подкачки.

0x2

Зарезервировано

Зарезервировано

Предпринимается попытка получить блокировку, которая в настоящее время удерживается.

0x3

Дескриптор WDFREQUEST

Количество невыполненных ссылок, оставшихся в обоих буферах

Средство проверки Windows Driver Framework обнаружило неустранимую ошибку. В частности, запрос ввода-вывода был завершен, но объект запроса платформы не может быть удален, так как имеются невыполненные ссылки на входной буфер, буфер вывода или и то, и другое.

0x4

Зарезервировано

Адрес вызывающего абонента

Параметр NULL был передан в функцию, требующую значения, отличного от NULL .

0x5

Переданное значение дескриптора

Зарезервировано

Дескриптор объекта платформы неправильного типа был передан в метод объекта платформы.

0x6

См. таблицу ниже.

0x7

Дескриптор объекта платформы

Зарезервировано

Драйвер попытался удалить объект платформы неправильно, вызвав WdfObjectDereference для удаления дескриптора вместо вызова WdfObjectDelete.

0x8

Дескриптор объекта транзакции DMA

Зарезервировано

Операция с объектом транзакции DMA была выполнена, когда он находился в неправильном состоянии.

0x9

В настоящее время неиспользуется.

0xA

Указатель на структуру WDF_QUEUE_FATAL_ERROR_DATA

Зарезервировано

При обработке запроса, который находится в очереди, произошла неустранимая ошибка.

0xB

См. таблицу ниже.

0xC

Дескриптор WDFDEVICE

Указатель на новый PnP IRP

Новое изменение состояния PnP IRP поступило, когда драйвер обрабатывал другое изменение состояния PnP IRP.

0xD

Дескриптор WDFDEVICE

Указатель на power IRP

Владелец политики управления питанием устройства получил IRP питания, который он не запрашивал. Может быть несколько владельцев политики управления питанием, но разрешен только один. Драйвер KMDF может изменить владение политикой управления питанием, вызвав WdfDeviceInitSetPowerPolicyOwnership.

0xE

IRQL, при котором была вызвана функция обратного вызова события.

IRQL, при котором возвращается функция обратного вызова события.

Функция обратного вызова события не возвращалась в том же irQL, в котором она была вызвана. Функция обратного вызова прямо или косвенно изменила IRQL (например, путем получения спин-блокировки, которая вызывает irQL до DISPATCH_LEVEL, но не освобождает спин-блокировку).

0xF

Адрес функции обратного вызова события.

Зарезервировано

Функция обратного вызова события вошла в критическую область, но не покинула критическую область перед возвратом.

Параметр 1 равен 0x6

Если параметр 1 равен 0x6, то при обработке запроса WDF произошла неустранимая ошибка. В этом случае параметр 2 дополнительно указывает тип неустранимой ошибки, которая была сделана, как определено в WDF_REQUEST_FATAL_ERROR перечисления.

Параметр 2 Параметр 3 Причина ошибки

0x1

Адрес IRP

Больше нет доступных расположений стека ввода-вывода для форматирования базового IRP.

0x2

Значение дескриптора запроса WDF

Предпринята попытка форматирования объекта запроса платформы, который не содержал IRP.

0x3

Значение дескриптора запроса WDF

Драйвер попытался отправить запрос платформы, который уже был отправлен целевому объекту ввода-вывода.

0x4

Указатель на структуру WDR_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA, содержащую указатель на IRP, значение дескриптора запроса WDF, основную функцию IRP и количество байтов, которые пытались записать.

Драйвер завершил запрос платформы, но записал в выходной буфер больше байтов, чем указано в IRP.

Параметр 1 равен 0xB

Если параметр 1 равен 0xB, то попытка получить или освободить блокировку была недопустимой. В этом случае параметр 3 дополнительно указывает сделанную ошибку.

Параметр 2 Параметр 3 Причина ошибки

Значение дескриптора

0x0

Дескриптор, передаваемый в WdfObjectAcquireLock или WdfObjectReleaseLock , представляет объект, который не поддерживает блокировки синхронизации.

Дескриптор блокировки спина WDF

0x1

Спин-блокировка освобождается потоком, который не получил ее.

Причина

Объяснение причины см. в описании каждого кода в разделе Параметры.

Решение

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

Как правило, файл дампа WDF предоставляет дополнительные сведения о драйвере, который вызвал эту ошибку, проверка. Используйте эту команду для просмотра файла журнала.

kd> !wdfkd.wdflogdump <WDF_Driver_Name>

Если параметр 1 равен 0x2, проверьте стек вызывающего объекта, чтобы определить блокировку.

Если параметр 1 равен 0x3, журнал ошибок платформы Kernel-Mode драйвера будет содержать сведения о невыполненных ссылках.

Если параметр 1 равен 0x4, используйте команду отладчика ln со значением Параметра 3 в качестве аргумента, чтобы определить, какой функции требуется параметр, отличный от NULL .

Если параметр 1 равен 0x7, используйте команду расширения !wdfkd.wdfhandleParameter 2 , чтобы определить тип дескриптора.

Если параметр 1 равен 0xA, то структура WDF_QUEUE_FATAL_ERROR_DATA будет указывать на проблемный запрос или дескриптор очереди. Он также будет указывать NTSTATUS, если он не STATUS_SUCCESS, если он доступен.