Condividi tramite


Uso di UMDF Verifier

Il framework fornisce funzionalità di verifica predefinite che è possibile usare per testare un driver UMDF (User-Mode Driver Framework) in esecuzione. Questa funzionalità, talvolta denominata UMDF Verifier, convalida ampiamente lo stato del driver e gli argomenti passati dal driver ai metodi dell'oggetto framework. È possibile usare UMDF Verifier autonomamente o insieme allo strumento Application Verifier (AppVerif.exe) per utilizzo generico.

UMDF Verifier controlla l'acquisizione e le gerarchie di blocco, verifica l'annullamento e l'utilizzo delle code di I/O corretti e garantisce che il driver e il framework seguano i contratti documentati.

UMDF Verifier causa errori nel codice del driver UMDF per controllare il processo host. Tuttavia, un controllo di bug di UMDF non causa la visualizzazione di una schermata di testo blu con informazioni sull'errore. Al contrario, un controllo di bug di UMDF:

  • Crea un file di dump della memoria e salva il file nella directory del file di log del computer, ad esempio %windir%\System32\LogFiles\WUDF\Xxx.dmp).

    Nota A partire da UMDF 2.15, la directory di log è %ProgramData%\Microsoft\WDF.

  • Crea una segnalazione errori per Microsoft (consenso esplicito).

  • Si interrompe nel debugger se ne è collegato uno al computer.

  • Termina il processo host e disabilita il dispositivo.

A partire da UMDF 2.0, UMDF Verifier genera punti di interruzione in alcuni casi e causa un controllo dei bug di UMDF in altri. Questo comportamento è simile a quello di KmDF Verifier.

È consigliabile eseguire tutti i test e lo sviluppo del driver dopo aver abilitato Application Verifier (AppVerif.exe) in WUDFHost.exe. Usare il comando seguente, collegare un debugger e quindi riavviare.

AppVerif -enable Heaps Exceptions Handles Locks Memory TLS Leak -for WudfHost.exe

A partire dalla versione 2.0 di UMDF, se si esegue Application Verifier nel processo host del driver (Wudfhost), UMDF Verifier viene abilitato automaticamente per tutti i driver UMDF 2.0 in tale host, nonché per tutti i driver UMDF 2.0 nei processi host driver futuri.

In UMDF 1.11 e versioni precedenti, il verificatore del framework è sempre attivo e non è possibile disattivarlo.

Abilitazione e disabilitazione del verifier UMDF

È possibile abilitare manualmente UMDF Verifier impostando VerifierOn su un valore diverso da zero nella sottochiave Parameters\Wdf del driver della chiave del Registro di sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<driver name>.

Nota L'esistenza di un valore VerifierOn , anche impostato su zero, esegue l'override del collegamento con Application Verifier. Di conseguenza, è consigliabile eliminare il valore se non viene forzato, anziché impostarlo su zero.

Per determinare se UMDF Verifier è abilitato, impostare un punto di interruzione in una posizione 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

È possibile controllare il comportamento di UMDF Verifier modificando i valori nel Registro di sistema. In alternativa, è possibile usare l'applicazione di controllo WDF Verifier per impostare questi valori.

I valori del Registro di sistema seguenti possono essere usati con UMDF 1.driver x , nonché driver UMDF 2.0 e versioni successive.

VerifyDownLevel (REG_DWORD)
Se VerifyDownLevel è 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. Se questo valore non esiste o è impostato su zero, il verificatore del framework include solo i test esistenti al momento della compilazione del driver.

Ad esempio, se il driver è stato compilato con la versione 1.7 del framework e se la versione 1.9 del framework è installata nel computer, l'impostazione di VerifyDownLevel su diverso da zero fa sì che il verificatore includa i test aggiunti alla versione 1.9 del verificatore durante l'esecuzione del driver.

Questo valore si trova nella sottochiave Parameters\Wdf della chiave del Registro di sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\DriverName .

TrackObjects (REG_DWORD)
Se TrackObjects è impostato su un valore diverso da zero, il framework entra nel debugger quando il driver viene scaricato, se gli oggetti basati su framework sono stati persi (non sono stati eliminati).

Durante i test regolari, è necessario abilitare TrackObjects e non TrackRefCounts. Se il verificatore segnala che il driver perde oggetti framework, usare l'applicazione di controllo per abilitare l'opzione di verifica TrackRefCounts .

Questo valore si trova nella sottochiave DefaultHostProcessGuid della chiave del Registro di sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , dove DefaultHostProcessGuid è un valore che è possibile trovare nella sottochiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF .

TrackRefCounts (REG_DWORD)
Se TrackRefCounts è impostato su un valore diverso da zero, il framework mantiene un conteggio del numero di riferimenti a ogni oggetto basato su framework. È possibile usare l'estensione del debugger !wudfrefhist per visualizzare le modifiche del conteggio dei riferimenti di un oggetto.

L'impostazione di TrackRefCounts su un valore diverso da zero riduce le prestazioni del driver, pertanto è consigliabile lasciare il valore zero a meno che non si stia eseguendo il debug di un bug di eliminazione di un oggetto.

Questo valore si trova nella sottochiave DefaultHostProcessGuid della chiave del Registro di sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services , dove DefaultHostProcessGuid è un valore che è possibile trovare nella sottochiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF .

Oltre ai valori del Registro di sistema elencati in precedenza, i driver UMDF 2.0 e versioni successive possono usare anche molti dei valori del Registro di sistema elencati in Uso di KMDF Verifier.