Condividi tramite


Uso di KMDF Verifier

Il framework fornisce funzionalità di verifica predefinite che è possibile usare per testare un driver KMDF in esecuzione. Questa funzionalità, denominata KmDF Verifier, convalida ampiamente lo stato del driver e gli argomenti passati dal driver ai metodi dell'oggetto framework. È possibile usare il verificatore del framework in modo autonomo o insieme allo strumento Di verifica driver per utilizzo generico (Verifier.exe).

Se kmdf Verifier è abilitato, il framework controlla l'acquisizione e le gerarchie di blocco, assicura che le chiamate al framework si verifichino nel runtime di integrazione corretto, verifichino l'annullamento e l'utilizzo della coda di I/O corretti e garantisca che il driver e il framework seguano i contratti documentati. Può anche simulare condizioni di memoria insufficiente in modo che lo sviluppatore del driver possa verificare se il driver risponde correttamente senza arresto anomalo, blocco o errore di scaricamento.

Quando è abilitata la verifica kmdf, il framework si interrompe nel debugger se un periodo di timeout predefinito di 60 secondi scade prima del completamento di alcuni degli eventi descritti in precedenza. A questo punto, è possibile eseguire il debug del problema oppure digitare "g" nel debugger per riavviare il periodo di timeout. È possibile modificare il periodo di timeout predefinito usando il valore del Registro di sistema DbgWaitForSignalTimeoutInSec descritto in Controllo del comportamento del verifier.

È consigliabile eseguire Driver Verifier (Verifier.exe) durante i test e aggiungere driver e wdf01000.sys all'elenco di verifica.

Nota

KmDF Verifier viene abilitato automaticamente quando si usano le impostazioni di /standard Driver Verifier. Se usi /flags invece dell'impostazione del /standard verificatore del driver, tieni presente che in Windows 10 versione 1803 o versioni più recenti, /flags è deprecato a favore di /ruleclasses. La classe di regole per WDF è 34. Per abilitare il verificatore WDF quando /standard non viene usato, usare /ruleclasses 34.

È anche possibile usare l'applicazione di controllo del verifier WDF (WdfVerifier.exe) per abilitare e disabilitare il verifier kmdf.

Abilitazione e disabilitazione della verifica predefinita del framework

È possibile abilitare manualmente Il servizio di verifica kmdf usando questa procedura:

  1. Se il driver è già caricato, usare Gestione dispositivi per disabilitare il dispositivo. Se si disabilita il dispositivo, il driver viene scaricato.

  2. Usare RegEdit per impostare VerifierOn su un valore diverso da zero nella sottochiave Parameters\Wdf del driver della chiave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services nel Registro di sistema di Windows. Un valore diverso da zero indica che KMDF Verifier è abilitato.

    Potrebbe essere necessario aggiungere VerifierOn manualmente alla sottochiave se non è già presente.

  3. Usare Gestione dispositivi per riabilitare il dispositivo, caricando così il driver.

  4. Quando il driver chiama WdfDriverCreate, il framework esamina il Registro di sistema e abilita il verificatore del framework se VerifierOn su un valore diverso da zero.

Per disabilitare il verificatore del framework, seguire la stessa procedura, ma impostare il valore di VerifierOn su zero.

Per determinare se il verificatore del framework è abilitato, impostare un punto di interruzione in un percorso dopo che il driver chiama WdfDriverCreate e usare il comando di estensione del debugger !wdfdriverinfo:

!wdfkd.wdfdriverinfo il nome driver> **** 0x1 <

Per altre informazioni sui comandi di estensione del debugger, vedere Estensioni del debugger per driver basati su framework.

Controllo del comportamento del verificatore

È consigliabile usare l'applicazione di controllo WDF Verifier per controllare le opzioni seguenti. Tuttavia, è possibile modificare direttamente i valori seguenti nel Registro di sistema.

I valori pertinenti si trovano nella sottochiave Parameters\Wdf della chiave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services .

VerifyOn (REG_DWORD)
Impostare questo valore su un valore diverso da zero per abilitare la macro WDFVERIFY.

DbgBreakOnError (REG_DWORD)
Se questo valore è impostato su un valore diverso da zero, il framework si interromperà nel debugger (se disponibile) ogni volta che un driver chiama WdfVerifierDbgBreakPoint.

DbgWaitForSignalTimeoutInSec (REG_DWORD)
A partire da Windows 8, quando VerifierOn e DbgBreakOnError sono impostati su valori diversi da zero, il driver può modificare il periodo di timeout predefinito impostando DbgWaitForSignalTimeoutInSec.

VerifierAllocateFailCount (REG_DWORD)
Se questo valore è impostato su un valore n, il framework non riesce ogni tentativo di allocare memoria per gli oggetti del driver dopo l'nesima allocazione.

TrackHandles (REG_MULTI_SZ)
Se questo valore è impostato su un elenco di uno o più nomi di tipi di handle di oggetti framework, il framework tiene traccia dei riferimenti a tutti gli handle di oggetto che corrispondono ai tipi di handle specificati.

EnhancedVerifierOptions (REG_DWORD)
Solo KMDF

Contiene una bitmap che è possibile usare per abilitare le funzionalità facoltative del verificatore del framework.

VerifyDownLevel (REG_DWORD)
Se è impostato su un valore diverso da zero e se il driver è stato compilato con una versione del framework precedente alla versione corrente, il verificatore del framework include i test aggiunti dopo la compilazione del driver.

Come regola generale, se si impostano i valori del Registro di sistema precedenti, eliminarli quando non sono più necessari.

Per le descrizioni complete di questi valori del Registro di sistema, vedere Valori del Registro di sistema per il debug dei driver basati su Framework.