IRP-Protokollierung
Die IRP-Protokollierungsfunktion von Driver Verifier überwacht die Verwendung von IRPs eines Treibers und zeichnet die IRP-Verwendung auf. Dieser Datensatz wird als WMI-Informationen gespeichert.
Das Windows Driver Kit (WDK) enthält das Tool DC2WMIParser (dc2wmiparser.exe), das diesen WMI-Eintrag in eine Textdatei konvertieren kann.
Diese Treiberüberprüfungsoption ist nur in Windows Server 2003 und höher verfügbar.
Der WMI-Eintrag
Der WMI-Eintrag enthält nicht mehr als zwanzig IRPs für jedes Gerät. Sobald die 22-erste IRP aufgezeichnet wird, wird der erste IRP-Eintrag ersetzt. Wenn also der Datensatz zwanzig IRPs auflistet, sind dies immer die letzten zwanzig, aber es gibt keine Möglichkeit zu wissen, welche davon die aktuellste ist.
Da der WMI-Eintrag im Arbeitsspeicher gespeichert ist, wird er gelöscht, wenn der Computer neu gestartet wird. Verwenden Sie daher DC2WMIParser, um diese Informationen in einer Datei zu speichern.
Wenn Sie die Option "/t " verwenden, wird DC2WMIParser für die angegebene Dauer kontinuierlich ausgeführt. In dieser Situation kann der Datensatz mehr als zwanzig IRPs pro Gerät enthalten (bis zu zwanzig IRPs in jedem Samplingzeitraum).
Aktivieren dieser Option
Sie können die IRP-Protokollierungsfunktion für einen oder mehrere Treiber aktivieren, indem Sie den Treiberüberprüfungs-Manager oder die Verifier.exe Befehlszeile verwenden.
Um die IRP-Protokollierungsfunktion zu aktivieren, müssen Sie auch die E/A-Überprüfung aktivieren.
An der Befehlszeile
In der Befehlszeile wird die Option "IRP-Protokollierung" durch 0x400 (Bit 10) dargestellt.
Verwenden Sie zum Aktivieren der IRP-Protokollierung einen Flagwert von 0x410 oder fügen Sie dem Flagwert 0x410 hinzu. Dieser Wert aktiviert die E/A-Überprüfung (0x10) und die IRP-Protokollierung (0x400). Zum Beispiel:
verifier /flags 0x410 /driver MyDriver.sys
Das Feature wird nach dem nächsten Start aktiv.
Unter Windows Vista und höheren Versionen von Windows können Sie die IRP-Protokollierung auch aktivieren und deaktivieren, ohne den Computer neu zu starten, indem Sie dem Befehl den Parameter "/volatile " hinzufügen. Zum Beispiel:
verifier /volatile /flags 0x410 /adddriver MyDriver.sys
Diese Einstellung ist sofort wirksam, geht aber verloren, wenn Sie den Computer herunterfahren oder neu starten. Ausführliche Informationen finden Sie unter Verwenden von veränderliche Einstellungen.
Verwenden des Treiberüberprüfungs-Managers
- Starten Sie den Treiberüberprüfungs-Manager. Geben Sie "Verifier " in ein Eingabeaufforderungsfenster ein.
- Wählen Sie "Benutzerdefinierte Einstellungen erstellen" (für Codeentwickler) aus, und klicken Sie dann auf "Weiter".
- Wählen Sie "Einzelne Einstellungen auswählen" aus einer vollständigen Liste aus.
- Aktivieren (überprüfen) IRP-Protokollierung und E/A-Überprüfung.
DC2WMIParser
DC2WMIParser ist ein Tool, das die von Driver Verifier erstellten WMI-IRP-Einträge sammelt und dieses Protokoll in eine Textdatei konvertiert.
Die Syntax DC2WMIParser lautet wie folgt:
dc2wmiparser [/f File] [/t Time]
Die Parameter haben jeweils die folgende Bedeutung:
/fDatei
Gibt den vollständigen Pfad und Dateinamen der zu schreibenden Protokolldatei an. Relative Pfade werden relativ zum aktuellen Verzeichnis übernommen. Wenn dies nicht angegeben wird, wird der Dateiname dc2verifier.act im aktuellen Verzeichnis verwendet.
/tUhrzeit
Gibt die Dauer in Minuten an, die DC2WMIParser weiterhin ausführt. Wenn "Time equals zero" ist, zeichnet DC2WMIParser alle WMI-IRP-Informationen auf, die bereits von Driver Verifier gespeichert wurden, und dann beenden. Wenn "Time " auf einen positiven Wert festgelegt ist, wird DC2WMIParser weiterhin für die angegebene Zeitdauer ausgeführt, wobei neue Informationen gespeichert werden, sobald sie eintreffen. Der Standardwert ist 0.
Format von DC2WMIParser-Protokolldateien
Die von DC2WMIParser generierte Datei ist eine ASCII-Textdatei.
Die erste Zeile dieser Datei enthält eine Dezimalzahl, die die Anzahl der in der Datei protokollierten Geräte darstellt.
Nach der ersten Zeile wird die Datei in Abschnitte unterteilt; In jedem Abschnitt wird ein Gerät beschrieben.
Für jedes Gerät lautet das Format:
In einer einzelnen Zeile: Der Gerätename.
In einer einzelnen Zeile: Eine Dezimalzahl, die angibt, wie viele Gerätetypen und -funktionen auf dieses Gerät ausgerichtet sind.
In einer Zeile für jeden Gerätetyp und jede Funktion: Drei hexadezimale Zahlen, getrennt durch Kommas. Diese stellen den Gerätetyp und die niedrigsten und höchsten Funktionen dar, die in diesem Datensatz aufgezeichnet wurden.
In einer Gruppe von Zeilen für jeden Gerätetyp und jede Funktion:
- Eine einzelne Zeile mit einer Dezimalzahl, die die Anzahl der IOCTLs für den aktuellen Gerätetyp angibt.
- Eine Zeile für jede IOCTL. Jede dieser Zeilen enthält sechs hexadezimale Zahlen, die durch Kommas getrennt sind. Diese geben den Gerätetyp, die Funktion, die Methode, den Zugriff, die Länge des Eingabepuffers und die Länge des Ausgabepuffers an.
Hier ist eine Beispiel-DC2WMIParser-Protokolldatei. In einer tatsächlichen Datei gibt es keine Leerzeichen, Kommentare oder Leerzeilen, aber diese wurden diesem Beispiel hinzugefügt, um es klarer zu machen.
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