Share via


Controllo MDL invariante per stack

L'opzione Controllo MDL invariante per stack monitora il modo in cui il driver gestisce i buffer MDL invarianti nello stack di driver. Driver Verifier può rilevare modifiche non valide dei buffer MDL invarianti. Per usare questa opzione, la verifica di I/O deve essere abilitata in almeno un driver.

Nota Questa opzione è disponibile a partire da Windows 8.

L'opzione Controllo MDL invariante per stack garantisce che i driver seguano le regole per i buffer MDL invarianti solo nel punto in cui la richiesta lascia lo stack di driver.

La prima volta che viene visualizzato un IRP con MDL invariante nella routine IoCallDriver , viene calcolata una firma univoca dal contenuto del buffer MDL invariante e archiviata in un database interno. Durante il completamento dell'IRP nella routine IoCompleteRequest , se l'IRP contiene ancora un MDL invariante per cui è stata registrata la firma, Driver Verifier verifica che il buffer non sia stato modificato.

Un buffer invariante, per la richiesta di scrittura, non può essere modificato per tutta la durata dell'IRP. Per una richiesta di lettura, non è possibile modificare un buffer invariante nel percorso di invio, quindi il confronto della firma del buffer viene eseguito all'ultima chiamata a IoCallDriver.

L'opzione Controllo MDL invariante per stack verifica l'invarianza del buffer MDL nell'intero stack di driver, indipendentemente da ciò che accade al buffer mentre passa attraverso singoli driver nello stack. Questa opzione è globale e non può essere applicata in modo selettivo per ogni driver. L'opzione Controllo MDL invariante per stack può rilevare solo la violazione, senza essere in grado di individuare il driver che ha violato l'invarianza del buffer. Per individuare il driver difettoso, usare l'opzione Controllo MDL invariante per driver , che esegue la convalida dell'invarianza del contenuto del buffer in ogni chiamata a IoCallDriver e IoCompleteRequest DDIs.

Attivazione di questa opzione

È possibile attivare la funzionalità Controllo MDL invariante per stack per uno o più driver usando Gestione verifica driver o la riga di comando Verifier.exe. È necessario riavviare il computer per attivare o disattivare l'opzione Controllo MDL invariante per stack. Per altre informazioni, vedere Selezione delle opzioni di verifica driver.

Per attivare l'opzione Controllo MDL invariante per stack, è necessario attivare anche la verifica di I/O.

  • Nella riga di comando

    Nella riga di comando il controllo MDL invariante per stack è rappresentato da 0x00002000 (Bit 13). Per attivare Controllo MDL invariante per stack, usare un valore flag di 0x00002010 o aggiungere 0x00002010 al valore del flag. Questo valore attiva la verifica di I/O (0x10) e il controllo MDL invariante per stack (0x00002000). Ad esempio:

    verifier /flags 0x00002010 /driver MyDriver.sys
    

    La funzionalità sarà attiva dopo l'avvio successivo.

  • Uso di Gestione verifica driver

    1. Avviare Gestione verifica driver. Digitare Verifier in una finestra del prompt dei comandi.
    2. Selezionare Crea impostazioni personalizzate (per sviluppatori di codice) e quindi fare clic su Avanti.
    3. Selezionare Seleziona singole impostazioni da un elenco completo.
    4. Selezionare (controllo) Verifica di I/O e Controllo MDL invariante per stack.
    5. Riavviare il computer.