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, если он доступен.