Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Driver Verifier è disponibile in tutte le versioni di Windows a partire da Windows 2000. Ogni versione introduce nuove funzionalità e verifica la ricerca di bug nei driver di Windows. Questa sezione riepiloga le modifiche e fornisce collegamenti alla documentazione correlata.
- Driver Verifier in Windows 10
- Driver Verifier in Windows 8.1
- Driver Verifier in Windows 8
- Driver Verifier in Windows 7
- Driver Verifier in Windows Vista
- Driver Verifier in Windows XP
Driver Verifier in Windows 11 (aggiornato: 30 settembre 2021)
A partire da Windows 11, molti flag sono ora abilitati senza riavviare usando una sintassi di comando diversa rispetto alla sintassi volatile. Per ulteriori informazioni sulla nuova sintassi, vedere Driver Verifier Command Syntax.
Driver Verifier in Windows 10 (aggiornato: 8 maggio 2018)
Importante
Per informazioni sull'abilitazione di WDF Verifier su Windows 10, versione 1803 o più recenti, vedi Uso di KMDF Verifier.
- È comunque possibile abilitare la verifica WDF come parte dei flag di
/standard
Driver Verifier. Per ulteriori informazioni, consultare Driver Verifier Command Syntax. - Questa modifica influirà se si abilita DV con sintassi
/flags 0x209BB
perché la verifica WDF non verrà più abilitata automaticamente.
A partire da Windows 10, il driver verifier include nuove regole di convalida dei driver per le tecnologie seguenti:
Driver Verifier in Windows 8-1 (aggiornato: 17 giugno 2013)
A partire da Windows 8.1, Driver Verifier introduce quattro nuove opzioni per rilevare gli errori.
L'opzione di verifica NDIS/WIFI applica un set di regole NDIS e LAN wireless che controllano l'interazione corretta tra un driver miniport NDIS e il kernel del sistema operativo.
L'opzione di simulazione sistematica delle risorse basse inserisce errori di risorse nei driver in modalità kernel.
L'opzione Fuzzing del ritardo di sincronizzazione del kernel randomizza le pianificazioni dei thread per aiutare a rilevare i bug di concorrenza nel driver.
L'opzione di verifica del commutatore di macchina virtuale monitora i driver di filtro (estensioni estendibili) eseguiti all'interno del commutatore estendibileHyper-V.
Nuova estensione del debugger: !ruleinfo
Driver Verifier in Windows 8 (aggiornato: 20 ottobre 2012)
A partire da Windows 8, Driver Verifier introduce cinque nuove opzioni per rilevare gli errori.
- L'opzione Power Framework Delay Fuzzing inserisce ritardi di esecuzione casuali per rilevare bug di concorrenza nei driver che usano il framework di risparmio energia (PoFx). I ritardi di esecuzione hanno limiti di tempo massimo. Questa opzione non è consigliata per i driver che non usano direttamente il framework di risparmio energia (PoFx).
- L'opzione di controllo della conformità DDI applica le stesse regole di utilizzo DDI (Device Driver Interface) utilizzate da Static Driver Verifier per verificare che il driver effettui chiamate di funzione al livello di richiesta IRQL necessario per la funzione. Il controllo di conformità DDI viene eseguito come parte delle opzioni standard di Driver Verifier.
- L'opzione Controllo MDL invariante per stack monitora il modo in cui il driver gestisce i buffer MDL invarianti nello stack di driver.
- L'opzione Controllo MDL invariante per driver monitora il modo in cui il driver gestisce i buffer MDL invarianti per ogni driver.
- L'opzione Stack Based Failure Injection inserisce errori di allocazione delle risorse nei driver in modalità kernel.
Quando si compila, distribuisce e testa il driver usando Visual Studio 2012 e WDK per Windows 8, è anche possibile configurare Driver Verifier per l'esecuzione in un computer di test quando si distribuisce il driver per i test.
Driver Verifier in Windows 7 (aggiornato: 22 ottobre 2012)
Per Windows 7, Driver Verifier è stato migliorato con nuovi test e funzionalità che consentono a Driver Verifier di esporre più classi di bug tipici del driver.
- Riferimenti non corretti agli handle degli utenti dai driver del kernel
- Miglioramenti della verifica di I/O
- Miglioramenti di Special Pool, monitoraggio del pool e simulazione delle risorse basse
- Utilizzo non corretto dei meccanismi di sincronizzazione
- Riferimenti a oggetti non corretti
- Addebiti per la quota del pool dalla routine DPC
- Blocchi o ritardi di arresto del sistema
- Miglioramento della gestione delle richieste di I/O in sospeso
In Windows 7, Driver Verifier fornisce controlli per i blocchi di selezione in coda, questi controlli sono simili a quelli forniti per i blocchi di selezione nelle versioni precedenti di Windows. Questi controlli includono quanto segue:
Verificare che un'operazione che dovrebbe aumentare il valore del livello di richiesta di interrupt (IRQL), come KeAcquireInStackQueuedSpinLock, non stia effettivamente abbassando il valore IRQL.
Verificando che un'operazione che deve abbassare il valore IRQL, ad esempio KeReleaseInStackQueuedSpinLock, non stia effettivamente aumentando il valore IRQL.
Tagliare il working set del processo di sistema se l'opzione Force IRQL Checking è abilitata, quando IRQL viene aumentato a DISPATCH_LEVEL o superiore, nel tentativo di esporre possibili riferimenti alla memoria impaginabile mentre il driver è in esecuzione a un IRQL elevato.
Previsione dei deadlock possibili quando è abilitata l'opzione Rilevamento deadlock.
Tentativo di utilizzare la stessa struttura dati KSPIN_LOCK sia come spin lock che come spin lock in coda nello stack quando è abilitata l'opzione di rilevamento deadlock.
Verifica di valori di puntatore chiaramente non corretti, come un indirizzo virtuale in modalità utente usato come indirizzo di spin lock.
Registrazione delle transizioni IRQL nel registro IRQL del Driver Verifier. Queste informazioni vengono visualizzate quando si usa l'estensione !verifier 8 dei debugger di Windows. Vedere !verifier.
Informazioni aggiuntive sul debug
In Windows 7, Driver Verifier fornisce le informazioni aggiuntive seguenti utili per il debug:
Esiste un log con tracce dello stack in ordine cronologico per le chiamate recenti a KeEnterCriticalRegion e KeLeaveCriticalRegion dai driver verificati. Il contenuto del log viene visualizzato usando l'estensione del debugger !verifier 0x200 dei Debugger di Windows. Queste informazioni possono essere utili per comprendere gli scenari in cui un thread è in esecuzione in modo imprevisto in un'area critica o sta tentando di lasciare un'area critica già lasciata.
È possibile visualizzare ulteriori informazioni dal log Force Pending I/O Requests utilizzando l'estensione !verifier 0x40 del debugger. Nelle versioni precedenti di Windows, il log conteneva solo una singola analisi dello stack per ogni IRP che Driver Verifier costringeva a rimanere in sospeso. Si tratta dell'analisi dello stack dal momento in cui È stata chiamata IoCompleteRequest per la prima volta per l'IRP forzato in sospeso. In Windows 7 ci sono almeno due voci di log, possibilmente più di due, per ogni IRP obbligatorio in sospeso.
- Analisi dello stack al momento in cui Driver Verifier ha selezionato l'IRP in sospeso. Driver Verifier sceglie alcuni irP da forzare in sospeso quando uno dei driver verificati chiama IoCallDriver.
- Analisi dello stack per ogni chiamata IoCompleteRequest per l'IRP forzato in sospeso prima che il completamento raggiunga il driver verificato. Possono esistere più chiamate IoCompleteRequest per lo stesso IRP perché uno dei driver può temporaneamente interrompere il completamento nella sua routine di completamento e quindi riprenderlo nuovamente chiamando IoCompleteRequest.
Nel log di transizione IRQL sono disponibili tracce dello stack più valide. Questo log viene visualizzato usando !verifier 8. Nelle versioni di Windows precedenti a Windows 7, Driver Verifier poteva aver tentato di registrare alcune di queste tracce dello stack a IRQL elevato e non è riuscito a acquisire la traccia dello stack a causa del valore IRQL elevato. In Windows 7, Driver Verifier tenta di acquisire queste tracce dello stack:
- Prima di alzare l'IRQL, ad esempio, quando un driver verificato chiama KeAcquireSpinLock.
- Dopo che l'IRQL è stato abbassato, quando un driver verificato chiama KeReleaseSpinLock.
In questo modo, Driver Verifier può acquisire più tracce dello stack di transizione IRQL.
!analyze può valutare i problemi esposti dai controlli avanzati di I/O Verifier (che fanno parte di I/O Verifier in Windows 7). Nelle versioni precedenti di Windows, la segnalazione errori di I/O avanzato consiste nella visualizzazione di una descrizione del difetto del driver rilevato da Driver Verifier seguito da un'interruzione nel debugger. L'esecuzione di !analyze dopo un'interruzione di questo tipo non comporta una valutazione significativa per molte di queste interruzioni perché !analyze non può usare le informazioni del testo della descrizione dell'errore visualizzato nel debugger. In Windows 7, le informazioni significative su questi difetti del driver vengono salvate da Driver Verifier in memoria. !analizza può trovare queste informazioni ed eseguire una valutazione automatica molto più significativa per molte di queste interruzioni.
Driver Verifier in Windows Vista (aggiornato: 9 febbraio 2009)
Per Windows Vista, Driver Verifier è stato migliorato con nuove funzionalità e test.
- Abilitazione di Driver Verifier e modifica delle impostazioni senza riavvio
- Simulazione avanzata di risorse basse
- Forzare le richieste di I/O in sospeso
- Controlli di sicurezza
- Verifica di I/O più approfondita
- Controllo IRQL avanzato
- Controlli vari
- Rilevamento della pagina di memoria bloccata
- Controlli automatici aggiuntivi
Driver Verifier in Windows XP (aggiornato: 4 dicembre 2001)
Driver Verifier è uno strumento per il monitoraggio dei driver in modalità kernel di Windows e dei driver grafici. Microsoft incoraggia vivamente i produttori di hardware a testare i driver con Driver Verifier per assicurarsi che i driver non eseseguono chiamate di funzione illegali o causino danneggiamento del sistema. Driver Verifier è stato migliorato con nuovi test e funzionalità per Microsoft Windows XP.
I driver inviati a WHQL per i test devono superare il Driver Verifier. Le nuove funzionalità di Driver Verifier in Windows XP includono:
- Driver Verifier Manager, un'interfaccia utente grafica (GUI) nuova per verifier.exe
- Nuovo controllo automatico per il cambio dello stack di monitoraggio
- Nuove opzioni di verifica driver per la verifica DMA (nota anche come verifica HAL), rilevamento dei deadlock e verifica SCSI
- Modifiche alla verifica di I/O che combinano test di "livello 1" e "livello 2", test di verifica di I/O avanzati facoltativi
- Nuove estensioni del debugger !deadlock e !dma
- Nuove verifiche di errori: 0xE6 (DRIVER_VERIFIER_DMA_VIOLATION) e 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)
- Codici secondari aggiuntivi per i codici di controllo dei bug esistenti 0xC4 e 0xC9
Le funzionalità di Driver Verifier includono anche:
Nuove opzioni della riga di comando di Verifier L'utilità verifier.exe include un nuovo parametro VolatileDriverList, che può essere usato con la parola chiave /adddriver per specificare un elenco di driver da aggiungere alle impostazioni volatili. VolatileDriverList può essere usato con la parola chiave /removedriver per specificare un elenco di driver da rimuovere.
Nuove estensioni !verifier Le nuove estensioni !verifier visualizzano informazioni aggiuntive sui log durante il monitoraggio di risorse basse o aumenti di IRQL e spin lock. È disponibile anche la Guida online.
- Flag impostate a 0x4 fanno sì che la visualizzazione includa un log di guasti iniettati da Driver Verifier durante la simulazione di risorse basse.
- Flag impostati con 0x8 permettono a la visualizzazione di includere un log delle modifiche IRQL più recenti apportate dai driver verificati.
- Se Flags sono uguali esattamente a 0x4 o 0x8, il parametro Quantity specifica il numero di record o voci di log da includere nella visualizzazione.
- Il parametro ? mostra un breve testo di aiuto
La Guida online di Gestione verifica driver può essere visualizzata in uno dei modi seguenti:
- Selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) un elemento nella finestra Gestione Verifica Driver e scegliere Che cos'è? dal menu a comparsa.
- Selezionare il punto interrogativo (?) nell'angolo superiore destro della finestra e quindi selezionare un elemento nella finestra Gestione verifica driver.