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.
Anche se ai driver in modalità kernel è vietato accedere alla memoria paginabile ad un IRQL elevato o mentre mantengono un blocco di spin, tale azione potrebbe non essere notata se la pagina non è stata effettivamente eliminata dal working set e paginata su disco.
Quando il controllo IRQL è abilitato, il Driver Verifier esercita una pressione estrema sull'uso della memoria di sistema. Ogni volta che un driver in fase di verifica richiede un blocco spin, chiama KeSynchronizeExecutiono eleva l'IRQL a DISPATCH_LEVEL o superiore, tutto il pool di sistema paginabile, insieme al codice e ai dati (che includono il codice e i dati paginabili del driver), vengono eliminati dal working set. Se il driver tenta di accedere a una di questa memoria, Driver Verifier emette una verifica di bug.
A partire da Windows Vista, questa opzione fa anche in modo che Driver Verifier rilevi quando alcuni oggetti di sincronizzazione sono inclusi nella memoria pagable. Non è possibile eseguire la paging di questi oggetti di sincronizzazione perché il kernel del sistema operativo accede a tali oggetti con privilegi elevati in IRQL. Driver Verifier può rilevare le strutture di KTIMER, PRKMUTEX, PKSPIN_LOCK, PRKEVENT, PKSPIN_LOCK, PRKSEMAPHORE, PERESOURCE e FAST_MUTEX.
Questa pressione sull'utilizzo della memoria non influirà direttamente sui driver non selezionati per la verifica. Quando un driver che non è selezionato per la verifica eleva l'IRQL, non attiva l'azione di riduzione. Tuttavia, quando un driver che è in corso di verifica aumenta l'IRQL, il Driver Verifier riduce le pagine che possono essere usate dai driver che non vengono verificati. Pertanto, gli errori generati dai driver che non vengono verificati possono essere rilevati occasionalmente quando questa opzione è attiva.
monitoraggio di IRQL genera e spin lock
È possibile monitorare il numero di aumenti di IRQL, blocchi a spin e chiamate a KeSynchronizeExecution effettuati dai driver verificati. È anche possibile monitorare il numero di volte in cui Driver Verifier ha ridotto la memoria paginabile dall'insieme di lavoro. Queste statistiche possono essere visualizzate da Gestione driver verifier, dalla riga di comando Verifier.exe o da un file di log. Per informazioni dettagliate, vedere Monitoring Global Counters.
L'estensione del debugger del kernel !verifier può essere usata anche per monitorare queste statistiche. Presenta informazioni simili a quella di Driver Verifier Manager. In Windows XP e versioni successive, l'estensione !verifier 0x8 visualizzerà un log delle recenti modifiche IRQL apportate dai driver verificati. Per informazioni sulle estensioni del debugger, vedere Debugging di Windows.
Chiamata di KeEnterCriticalRegion o KeLeaveCriticalRegion in DISPATCH_LEVEL o superiore
KeEnterCriticalRegion e KeLeaveCriticalRegion sono API che è possibile usare per sincronizzare l'esecuzione di una sequenza critica di codice driver con il recapito delle normali chiamate di routine asincrone del kernel. Le API KeEnterCriticalRegion e KeLeaveCriticalRegion non possono essere chiamate con IRQL = DISPATCH_LEVEL o superiore. La chiamata a KeEnterCriticalRegion o KeLeaveCriticalRegion a DISPATCH_LEVEL o superiore può causare un blocco del sistema o un danneggiamento della memoria.
A partire da Windows 7, Driver Verifier rileva le chiamate a queste API a livello DISPATCH o superiore se l'opzione Forza verifica IRQL è abilitata.
l'attivazione di questa opzione
È possibile attivare la funzionalità Force IRQL Checking per uno o più driver utilizzando Driver Verifier Manager o il comando da riga di comando Verifier.exe. Per informazioni dettagliate, vedere Selezione delle opzioni di verifica driver.
Alla riga di comando
Nella riga di comando, l'opzione Force IRQL Checking è rappresentata da Bit 1 (0x2). Per attivare Force IRQL Checking, usare un valore flag di 0x2 o aggiungere 0x2 al valore del flag. Per esempio:
verifier /flags 0x2 /driver MyDriver.sys
La funzionalità sarà attiva dopo l'avvio successivo.
È anche possibile attivare e disattivare Force IRQL Checking senza riavviare il computer aggiungendo il parametro /volatile al comando. Per esempio:
verifier /volatile /flags 0x2 /adddriver MyDriver.sys
Questa impostazione è effettiva immediatamente, ma viene persa quando si arresta o si riavvia il computer. Per informazioni dettagliate, vedere Uso di impostazioni volatili.
La funzionalità Force IRQL Checking è inclusa anche nelle impostazioni standard. Per esempio:
verifier /standard /driver MyDriver.sys
Uso del Driver Verifier Manager
- Avviare il Manager verifica driver. Digitare Verifier in una finestra del Prompt dei Comandi.
- Selezionare Crea impostazioni personalizzate (per sviluppatori di codice) e quindi fare clic su Avanti.
- Selezionare Selezionare le singole impostazioni da un elenco completo.
- Selezionare (contrassegnare) Forzare il controllo IRQL.
La funzionalità Force IRQL Checking è inclusa anche nelle impostazioni standard. Per usare questa funzionalità, in Gestione Verificatore Driver, fare clic su Crea impostazioni standard.