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.