Comprobación de errores 0x10D: WDF_VIOLATION

La comprobación de errores WDF_VIOLATION tiene un valor de 0x0000010D. Esto indica que Kernel-Mode Driver Framework (KMDF) detectó que Windows encontró un error en un controlador basado en el marco.

Importante

Este artículo es para programadores. Si es un cliente que ha recibido un código de error de pantalla azul mientras usa el equipo, consulte Solución de errores de pantalla azul.

parámetros de WDF_VIOLATION

El parámetro 1 indica el código de error específico de la comprobación de errores. El parámetro 4 está reservado.

Parámetro 1 Parámetro 2 Parámetro 3 Causa del error

0x1

Puntero a una estructura de WDF_POWER_ROUTINE_TIMED_OUT_DATA

Reservado

Un controlador basado en marco ha agotado el tiempo de espera durante una operación de alimentación. Normalmente, esto significa que la pila de dispositivos no estableció el bit de DO_POWER_PAGABLE y un controlador intentó una operación paginable después de que la pila de dispositivos de paginación se apagara.

0x2

Reservado

Reservado

Se está intentando adquirir un bloqueo que se está conservando actualmente.

0x3

Controlador WDFREQUEST

Número de referencias pendientes que permanecen en ambos búferes

El comprobador de Windows Driver Framework ha encontrado un error irrecuperable. En concreto, se completó una solicitud de E/S, pero no se puede eliminar un objeto de solicitud de marco porque hay referencias pendientes al búfer de entrada, el búfer de salida o ambos.

0x4

Reservado

Dirección del autor de la llamada

Se pasó un parámetro NULL a una función que requería un valor distinto de NULL .

0x5

Valor de identificador pasado en

Reservado

Se pasó un identificador de objeto de marco del tipo incorrecto a un método de objeto de marco.

0x6

Consulte la tabla siguiente.

0x7

Identificador del objeto framework

Reservado

Un controlador intentó eliminar un objeto de marco incorrectamente llamando a WdfObjectDereference para eliminar un identificador en lugar de llamar a WdfObjectDelete.

0x8

Identificador del objeto de transacción DMA

Reservado

Se produjo una operación en un objeto de transacción DMA mientras no estaba en el estado correcto.

0x9

Actualmente no se usa.

0xA

Puntero a una estructura de WDF_QUEUE_FATAL_ERROR_DATA

Reservado

Se ha producido un error irrecuperable al procesar una solicitud que se encuentra actualmente en la cola.

0xB

Consulte la tabla siguiente.

0xC

Identificador WDFDEVICE

Puntero al nuevo IRP de PnP

Un nuevo IRP de PnP que cambia el estado llegó mientras el controlador procesaba otro IRP de PnP que cambiaba el estado.

0xD

Identificador WDFDEVICE

Puntero al IRP de alimentación

El propietario de la directiva de energía de un dispositivo recibió un IRP de energía que no solicitó. Puede haber varios propietarios de directivas de energía, pero solo se permite uno. Un controlador KMDF puede cambiar la propiedad de la directiva de energía llamando a WdfDeviceInitSetPowerPolicyOwnership.

0xE

IRQL en el que se llamó a la función de devolución de llamada de evento.

IRQL en el que se devolvió la función de devolución de llamada de evento.

Una función de devolución de llamada de evento no devolvió en el mismo IRQL en el que se llamó. La función de devolución de llamada cambió IRQL directa o indirectamente (por ejemplo, mediante la adquisición de un bloqueo por subproceso, que provoca IRQL a DISPATCH_LEVEL, pero no libera el bloqueo por subproceso).

0xF

Dirección de una función de devolución de llamada de eventos.

Reservado

Una función de devolución de llamada de eventos entró en una región crítica, pero no dejó la región crítica antes de devolverla.

El parámetro 1 es igual a 0x6

Si el parámetro 1 es igual a 0x6, se produjo un error irrecuperable al controlar una solicitud WDF. En este caso, el parámetro 2 especifica aún más el tipo de error irrecuperable que se ha realizado, tal como se define en la enumeración WDF_REQUEST_FATAL_ERROR.

Parámetro 2 Parámetro 3 Causa del error

0x1

Dirección del IRP

No hay más ubicaciones de pila de E/S disponibles para dar formato al IRP subyacente.

0x2

Valor de identificador de solicitud de WDF

Se intentó dar formato a un objeto de solicitud de marco que no contenía un IRP.

0x3

Valor de identificador de solicitud de WDF

El controlador intentó enviar una solicitud de marco que ya se ha enviado a un destino de E/S.

0x4

Puntero a una estructura de WDR_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA que contiene un puntero al IRP, un valor de identificador de solicitud WDF, una función principal de IRP y el número de bytes que se intentaron escribir.

El controlador ha completado una solicitud de marco, pero ha escrito más bytes en el búfer de salida que se especifican en irP.

El parámetro 1 es igual a 0xB

Si el parámetro 1 es igual a 0xB, un intento de adquirir o liberar un bloqueo no era válido. En este caso, el parámetro 3 especifica aún más el error que se ha realizado.

Parámetro 2 Parámetro 3 Causa del error

Valor de identificador

0x0

Un identificador pasado a WdfObjectAcquireLock o WdfObjectReleaseLock representa un objeto que no admite bloqueos de sincronización.

Un controlador de bloqueo de número de WDF

0x1

El bloqueo de número se libera mediante un subproceso que no lo adquirió.

Causa

Consulte la descripción de cada código en la sección Parámetros para obtener una explicación de la causa.

Resolución

La extensión !analyze debug muestra información sobre la comprobación de errores y puede ser útil para recopilar información, como el módulo de código con errores.

Normalmente, el archivo de volcado de WDF producirá más información sobre el controlador que provocó esta comprobación de errores. Use este comando para examinar el archivo de registro.

kd> !wdfkd.wdflogdump <WDF_Driver_Name>

Si el parámetro 1 es igual a 0x2, examine la pila del autor de la llamada para determinar el bloqueo en cuestión.

Si el parámetro 1 es igual a 0x3, el registro de errores del controlador Kernel-Mode Driver Framework incluirá detalles sobre las referencias pendientes.

Si el parámetro 1 es igual a 0x4, use el comando ln debugger con el valor de Parameter 3 como argumento para determinar qué función requiere un parámetro distinto de NULL .

Si el parámetro 1 es igual a 0x7, use el comando de extensión !wdfkd.wdfhandleParameter 2 para determinar el tipo de identificador.

Si el parámetro 1 es igual a 0xA, la estructura WDF_QUEUE_FATAL_ERROR_DATA indicará la solicitud problemática o el identificador de cola. También indicará ntstatus, si no STATUS_SUCCESS, cuando esté disponible.