Condividi tramite


Controllo bug 0x10D: WDF_VIOLATION

Il controllo dei bug WDF_VIOLATION ha un valore di 0x0000010D. Ciò indica che Kernel-Mode Driver Framework (KMDF) ha rilevato che Windows ha rilevato un errore in un driver basato su framework.

Importante

Questo articolo è destinato ai programmatori. Se si è un cliente che ha ricevuto un codice di errore della schermata blu durante l'uso del computer, vedere Risolvere gli errori della schermata blu.

parametri WDF_VIOLATION

Il parametro 1 indica il codice di errore specifico del controllo dei bug. Il parametro 4 è riservato.

Parametro 1 Parametro 2 Parametro 3 Causa dell'errore

0x1

Puntatore a una struttura WDF_POWER_ROUTINE_TIMED_OUT_DATA

Riservato

Un driver basato su framework si è verificato un timeout durante un'operazione di alimentazione. Ciò significa in genere che lo stack di dispositivi non ha impostato il bit DO_POWER_PAGABLE e un driver ha tentato un'operazione impaginabile dopo che lo stack di dispositivi di paging è stato spento.

0x2

Riservato

Riservato

Si sta tentando di acquisire un blocco attualmente in esecuzione.

0x3

Handle WDFREQUEST

Numero di riferimenti in sospeso che rimangono in entrambi i buffer

Windows Driver Framework Verifier ha rilevato un errore irreversibile. In particolare, è stata completata una richiesta di I/O, ma non è possibile eliminare un oggetto richiesta framework perché sono presenti riferimenti in sospeso al buffer di input, al buffer di output o a entrambi.

0x4

Riservato

Indirizzo del chiamante

È stato passato un parametro NULL a una funzione che richiedeva un valore non NULL .

0x5

Valore handle passato in

Riservato

Un handle di oggetto framework del tipo non corretto è stato passato a un metodo oggetto framework.

0x6

Vedere la tabella seguente.

0x7

Handle dell'oggetto framework

Riservato

Un driver ha tentato di eliminare erroneamente un oggetto framework chiamando WdfObjectDereference per eliminare un handle anziché chiamare WdfObjectDelete.

0x8

Handle dell'oggetto transazione DMA

Riservato

Si è verificata un'operazione su un oggetto transazione DMA mentre non era nello stato corretto.

0x9

Attualmente inutilizzato.

0xA

Puntatore a una struttura WDF_QUEUE_FATAL_ERROR_DATA

Riservato

Si è verificato un errore irreversibile durante l'elaborazione di una richiesta attualmente presente nella coda.

0xB

Vedere la tabella seguente.

0xC

Handle WDFDEVICE

Puntatore a un nuovo IRP PnP

È arrivato un nuovo IRP con modifica dello stato durante l'elaborazione di un altro IRP PnP con modifica dello stato.

0xD

Handle WDFDEVICE

Puntatore all'alimentazione di IRP

Il proprietario dei criteri di risparmio energia di un dispositivo ha ricevuto un IRP di alimentazione che non ha richiesto. Potrebbero essere presenti più proprietari di criteri di risparmio energia, ma è consentito solo uno. Un driver KMDF può modificare la proprietà dei criteri di risparmio energia chiamando WdfDeviceInitSetPowerPolicyOwnership.

0xE

IRQL in corrispondenza del quale è stata chiamata la funzione di callback dell'evento.

IRQL in corrispondenza del quale è stata restituita la funzione di callback dell'evento.

Una funzione di callback dell'evento non ha restituito lo stesso IRQL in corrispondenza del quale è stato chiamato. La funzione di callback ha modificato l'IRQL direttamente o indirettamente (ad esempio, acquisendo uno spinlock, che genera IRQL per DISPATCH_LEVEL, ma non rilasciando lo spinlock).

0xF

Indirizzo di una funzione di callback dell'evento.

Riservato

Una funzione di callback di eventi ha immesso un'area critica, ma non ha lasciato l'area critica prima di restituire.

Il parametro 1 è uguale a 0x6

Se il parametro 1 è uguale a 0x6, è stato generato un errore irreversibile nella gestione di una richiesta WDF. In questo caso, il parametro 2 specifica ulteriormente il tipo di errore irreversibile che è stato eseguito, come definito dall'enumerazione WDF_REQUEST_FATAL_ERROR.

Parametro 2 Parametro 3 Causa dell'errore

0x1

Indirizzo dell'IRP

Non sono disponibili altri percorsi dello stack di I/O per formattare l'IRP sottostante.

0x2

Valore dell'handle di richiesta WDF

È stato effettuato un tentativo di formattare un oggetto richiesta framework che non contiene un IRP.

0x3

Valore dell'handle di richiesta WDF

Il driver ha tentato di inviare una richiesta framework che è già stata inviata a una destinazione di I/O.

0x4

Puntatore a una struttura WDR_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA che contiene un puntatore all'IRP, un valore di handle di richiesta WDF, una funzione principale di IRP e il numero di byte che si è tentato di scrivere

Il driver ha completato una richiesta di framework, ma ha scritto più byte nel buffer di output rispetto a quanto specificato in IRP.

Il parametro 1 è uguale a 0xB

Se il parametro 1 è uguale a 0xB, un tentativo di acquisizione o rilascio di un blocco non è valido. In questo caso, il parametro 3 specifica ulteriormente l'errore che è stato eseguito.

Parametro 2 Parametro 3 Causa dell'errore

Valore handle

0x0

Un handle passato a WdfObjectAcquireLock o WdfObjectReleaseLock rappresenta un oggetto che non supporta i blocchi di sincronizzazione.

Handle di blocco di rotazione WDF

0x1

Il blocco di rotazione viene rilasciato da un thread che non lo ha acquisito.

Causa

Per una spiegazione della causa, vedere la descrizione di ogni codice nella sezione Parametri.

Risoluzione

L'estensione di debug !analyze visualizza informazioni sul controllo dei bug e può essere utile per raccogliere informazioni, ad esempio il modulo di codice di errore.

In genere, il file di dump WDF restituirà ulteriori informazioni sul driver che ha causato il controllo di bug. Usare questo comando per esaminare il file di log.

kd> !wdfkd.wdflogdump <WDF_Driver_Name>

Se il parametro 1 è uguale a 0x2, esaminare lo stack del chiamante per determinare il blocco in questione.

Se il parametro 1 è uguale a 0x3, il log degli errori del driver Kernel-Mode Driver Framework includerà informazioni dettagliate sui riferimenti in sospeso.

Se il parametro 1 è uguale a 0x4, usare il comando ln debugger con il valore di Parameter 3 come argomento per determinare quale funzione richiede un parametro non NULL .

Se il parametro 1 è uguale a 0x7, usare il comando di estensione !wdfkd.wdfhandleParameter 2 per determinare il tipo di handle.

Se il parametro 1 è uguale a 0xA, la struttura WDF_QUEUE_FATAL_ERROR_DATA indicherà la richiesta problematica o l'handle della coda. Indicherà anche NTSTATUS, se non STATUS_SUCCESS, se disponibile.