Registrazione IRP

La funzionalità di registrazione IRP di Driver Verifier monitora l'uso di irP di un driver e registra l'utilizzo di IRP. Questo record viene archiviato come informazioni WMI.

Windows Driver Kit (WDK) include lo strumento DC2WMIParser (dc2wmiparser.exe) in grado di convertire questo record WMI in un file di testo.

Questa opzione Driver Verifier è disponibile solo in Windows Server 2003 e versioni successive.

The WMI Record

Il record WMI non includerà più di venti PUNTI di integrazione per ogni dispositivo. Una volta registrato il ventunesimo IRP, il primo record IRP viene sostituito. Quindi, se il record elenca venti IP, questi sono sempre i venti più recenti, ma non c'è modo di sapere quale di questi è quello più recente.

Poiché il record WMI viene archiviato in memoria, verrà cancellato quando il computer viene riavviato. Usare quindi DC2WMIParser per salvare queste informazioni in un file.

Se si usa l'opzione /t , DC2WMIParser verrà eseguito continuamente per la durata specificata. In questo caso, il record può includere più di venti IRP per dispositivo (fino a venti IRP in ogni periodo di campionamento).

Attivazione di questa opzione

È possibile attivare la funzionalità di registrazione IRP per uno o più driver usando Gestione verifica driver o la riga di comando Verifier.exe.

Per attivare la funzionalità registrazione IRP, è necessario attivare anche la verifica di I/O.

  • Dalla riga di comando

    Nella riga di comando l'opzione Registrazione IRP è rappresentata da 0x400 (bit 10).

    Per attivare Registrazione IRP, usare un valore flag di 0x410 o aggiungere 0x410 al valore del flag. Questo valore attiva la verifica di I/O (0x10) e la registrazione IRP (0x400). Ad esempio:

    verifier /flags 0x410 /driver MyDriver.sys
    

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

    In Windows Vista e versioni successive di Windows è anche possibile attivare e disattivare Registrazione IRP senza riavviare il computer aggiungendo il parametro /volatile al comando. Ad esempio:

    verifier /volatile /flags 0x410 /adddriver MyDriver.sys
    

    Questa impostazione è effettiva immediatamente, ma viene persa quando si arresta o si riavvia il computer. Per informazioni dettagliate, vedere Uso delle impostazioni volatili.

  • 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 (controllare) Registrazione IRP e verifica I/O.

DC2WMIParser

DC2WMIParser è uno strumento che raccoglie i record IRP WMI creati da Driver Verifier e converte questo log in un file di testo.

La sintassi DC2WMIParser è la seguente:

dc2wmiparser [/f File] [/t Time]

I parametri hanno il significato seguente:

/fFile
Specifica il percorso completo e il nome file del file di log da scrivere. I percorsi relativi verranno eseguiti rispetto alla directory corrente. Se viene omesso, verrà usato il nome file dc2verifier.act nella directory corrente.

/tOra
Specifica il periodo di tempo, espresso in minuti, che DC2WMIParser continuerà a essere eseguito. Se Time è uguale a zero, DC2WMIParser registrerà tutte le informazioni IRP WMI già archiviate da Driver Verifier e quindi uscire. Se Time è impostato su un valore positivo, DC2WMIParser continuerà a essere eseguito per il periodo di tempo specificato, archiviando le nuove informazioni non appena arriva. Il valore predefinito è zero.

Formato dei file di log DC2WMIParser

Il file generato da DC2WMIParser è un file di testo ASCII.

La prima riga di questo file contiene un numero decimale che rappresenta il numero di dispositivi registrati nel file.

Dopo la prima riga, il file è diviso in sezioni; ogni sezione descrive un dispositivo.

Per ogni dispositivo il formato è:

  • In una singola riga: nome del dispositivo.

  • In una singola riga: numero decimale che specifica il numero di tipi di dispositivo e funzioni destinati a questo dispositivo.

  • Su una riga per ogni tipo di dispositivo e funzione: tre numeri esadecimali, separati da virgole. Rappresentano il tipo di dispositivo e le funzioni più basse e più alte registrate in questo record.

  • In un gruppo di righe per ogni tipo di dispositivo e funzione:

    • Riga singola con un numero decimale che specifica il numero di IOCTLs per il tipo di dispositivo corrente.
    • Una riga per ogni IOCTL. Ognuna di queste righe contiene sei numeri esadecimali separati da virgole. Specificano il tipo di dispositivo, la funzione, il metodo, l'accesso, la lunghezza del buffer di input e la lunghezza del buffer di output.

Ecco un file di log DC2WMIParser di esempio. In un file effettivo non ci saranno spazi, commenti o righe vuote, ma sono stati aggiunti a questo esempio per renderlo più chiaro.

2           There are two devices described by this log file.

The first device begins here:

  DP(1)0x7e00-0x21dbda400+3   Device name of the first device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420

    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0

The second device begins here:

  DP(1)0x7e00-0x21dbda400+2   Device name of the second device
  2                           Number of device type IOCTLs targeted at this device

    7,12,12                     First targeted device: device type 7, low function 12, high function 12
    2d,420,420                  Second targeted device: device type 2d, low function 420, high function 420


    1                           Number of IOCTLs for first targeted  device (type 7)
      7,12,0,0,90,0               Device type 7, function 12, method 0, access 0, inbuflen 90, outbuflen 0
    1                           Number of IOCTLs for second targeted device (type 2d)
      2d,420,0,0,c,0              Device type 2d, function 420, method 0, access 0, inbuflen c, outbuflen 0