Zugreifen auf UMDF-Metadaten in WER-Berichten
In diesem Thema werden der Speicherort und der Inhalt der Windows-Fehlerberichterstattung -Berichte (WER) beschrieben, die das Betriebssystem erstellt, wenn ein User-Mode Driver Framework (UMDF) abstürzt.
Das System generiert WER-Berichte für drei verschiedene UMDF-Ereignistypen: WUDFHostProblem, WUDFUnhandledException und WUDFVerifierFailure.
Wenn der Reflektor den Treiberhostprozess beendet, manchmal aufgrund der Überschreitung des Hosttimeoutschwellenwerts , generiert das System eine Datei namens Report.wer, die die WER-Informationen enthält. Insbesondere enthält Report.wer UMDF-Metadaten, die hilfreich sein können, wenn Sie versuchen, einen UMDF-Treiber ohne Zugriff auf ein Livedebuggingziel zu debuggen.
In Windows 8.1 finden Sie die Datei Report.wer im Verzeichnis C:\ProgramData\Microsoft\Windows\WER\ReportQueue. Öffnen Sie in diesem Verzeichnis den letzten Ordner NonCritical_HostProblem_*, und suchen Sie nach Report.wer.
Sie können auch mit dem folgenden PowerShell-Befehl auf WER-Berichte für UMDF zugreifen:
get-winevent -providername "Windows Error Reporting" | where-object {$_.Message -like "*wudf*"} | format-list | out-file UmdfReports.txt
WUDFHostProblem-Beispielbericht
Es folgt ein UMDF-WER-Beispielbericht vom Typ WUDFHostProblem. Es wurde aus dem oben beschriebenen Verzeichnis ReportQueue abgerufen. Wenn Sie powerShell zum Abrufen der Berichte verwenden, können die Felder als P0, P1, P2 anstelle von Sig[0], Sig[1], Sig[2] bezeichnet werden. Andernfalls sind die Felder identisch und enthalten dieselben möglichen Werte. Dieses Beispiel wurde aus einem der WDK-Beispiele generiert, die das OSR USB-FX2-Hardwarereferenzboard verwenden.
Sig[0].Name=EventClass
Sig[0].Value=HostProblem
Sig[1].Name=Problem
Sig[1].Value=HostTimeout
Sig[2].Name=DetectedBy
Sig[2].Value=2
Sig[3].Name=UMDFVersion
Sig[3].Value=6.3.9600
Sig[4].Name=ExitCode
Sig[4].Value=103
Sig[5].Name=Operation
Sig[5].Value=3
Sig[6].Name=Message
Sig[6].Value=11b00
Sig[7].Name=Status
Sig[7].Value=ffffffff
Sig[8].Name=HardwareId
Sig[8].Value=USB\VID_0547&PID_1002&REV_0000
WUDFHostProblem-Felder
In der folgenden Tabelle werden die möglichen Werte für die Felder in einem Bericht vom Typ WUDFHostProblem beschrieben.
Index | Name | Werte |
---|---|---|
0 | EventClass | Das Framework legt diesen Wert auf HostProblem fest. |
1 | Problem | Dieses Feld enthält einen der folgenden Werte:
|
2 | DetectedBy | Enthält einen der folgenden Enumerationswerte: cpp
WdfComponentInvalid = 0,
WdfComponentPlatform,
WdfComponentReflector,
WdfComponentDriverManager,
WdfComponentHost,
WdfComponentFramework,
WdfComponentTest,
WdfComponentMax
|
3 | UMDFVersion | Gibt die Version der derzeit verwendeten UMDF-Bibliotheken an. Beachten Sie, dass dies möglicherweise eine höhere Version als im Betriebssystem ist, wenn der Benutzer Maßnahmen ergriffen hat, um die Frameworkbibliotheken zu aktualisieren. |
4 | ExitCode | Enthält einen der folgenden Enumerationswerte: cpp
WdfHostExit_StillActive = 0x103,
WdfHostExit_CodeUnknown = 0x70000000,
WdfHostExit_InternalDriverStopReported,
WdfHostExit_InternalDriverStopReportFailed,
WdfHostExit_ExternalTermination
WdfHostExit_StillActive gibt an, dass der Hostprozess zum Zeitpunkt ausgeführt wurde, als das Framework den Fehlerbericht erstellt hat. |
5 | Vorgang | Enthält einen der folgenden Enumerationswerte: cpp
WudfOperation_Invalid,
WudfOperation_Init,
WudfOperation_HostShutdown,
WudfOperation_Pnp,
WudfOperation_Cleanup,
WudfOperation_Close,
WudfOperation_Cancel,
WudfOperation_IO,
WudfOperation_Interrupt,
WudfOperation_PoFx,
WudfOperation_Other,
WudfOperation_Max
|
6 | Nachricht | Die erste Ziffer dieses Felds ist immer 1, was angibt, dass ein IRP am Vorgang beteiligt ist. Nachfolgende Ziffernpaare geben die MajorFunction bzw . MinorFunction des IRP an. Im obigen Beispielbericht enthält dieses Feld beispielsweise den Wert 11b00. Dies bedeutet, dass der Vorgang ein IRP war, das der Reflektor im Auftrag des Treiberhostprozesses mit einem Hauptfunktionswert von IRP_MJ_PNP und neben dem Funktionswert IRP_MN_START_DEVICE (1 = IRP-Nachricht, 1b = IRP_MJ_PNP, 00 = IRP_MN_START_DEVICE). |
7 | Status | Das Framework legt diesen Wert immer auf 0xffffffff fest. |
8 | HardwareId | Dieses Feld enthält die Hardware-ID des Geräts, das dem Treiber zugeordnet ist, bei dem ein Problem aufgetreten ist. |
WUDFUnhandledException-Felder
In der folgenden Tabelle werden die möglichen Werte für die Felder in einem Bericht vom Typ WUDFUnhandledException beschrieben.
Index | Name | Werte |
---|---|---|
0 | EventClass | Das Framework legt diesen Wert auf UnhandledException fest. |
1 | Komponente | Dieses Feld enthält einen der folgenden Werte:
|
2 | ExceptionCode | Der Grund, warum die Ausnahme aufgetreten ist. Eine Liste der Werte finden Sie unter EXCEPTION_RECORD. |
3 | RelativeFaultingAddress | Die Adresse, an der die Ausnahme aufgetreten ist. |
4 | AbsturzModuleName | Name des Treibers, der die Ausnahme ausgelöst hat. |
5 | AbsturzDateiVersion | Frameworkversion des Treibers. |
6 | LastDriverName | Name der ersten Nicht-UMDF-Treiberkomponente im Treiberstapel. |
7 | LastDriverVersion | Versionsnummer der ersten Nicht-UMDF-Treiberkomponente im Treiberstapel. |
8 | UMDFVersion | Gibt die Version der derzeit verwendeten UMDF-Bibliotheken an. Beachten Sie, dass dies eine höhere Version sein kann, als im Lieferumfang des Betriebssystems enthalten ist, wenn der Benutzer Maßnahmen zum Aktualisieren der Frameworkbibliotheken unternommen hat. |
9 | HardwareId | Ab Windows 8 wird die Hardware-ID in einer separaten Datei bereitgestellt. In diesem Fall legt das Framework diesen Wert auf Separat gedumpt fest. |
WUDFVerifierFailure-Felder
In der folgenden Tabelle werden die möglichen Werte für die Felder in einem Bericht vom Typ WUDFVerifierFailure beschrieben.
Index | Name | Werte |
---|---|---|
0 | EventClass | Das Framework legt diesen Wert auf VerifierFailure fest. |
1 | FoundBy | Das Framework legt diesen Wert auf Framework fest. |
2 | Category | Dieses Feld enthält einen der folgenden Werte:
|
3 | ErrorNumber | Nur zur internen Verwendung. |
4 | Standort | Nur zur internen Verwendung. |
5 | Treiber | Der Name des Treibermoduls, bei dem ein Fehler aufgetreten ist. |
6 | CallerAddress | Die Adresse der Routine, die die Erstellung des Berichts initiiert hat. |
7 | UMDFVersion | Gibt die Version der derzeit verwendeten UMDF-Bibliotheken an. Beachten Sie, dass dies eine höhere Version sein kann, als im Lieferumfang des Betriebssystems enthalten ist, wenn der Benutzer Maßnahmen zum Aktualisieren der Frameworkbibliotheken unternommen hat. |
8 | HardwareId | Ab Windows 8 wird die Hardware-ID in einer separaten Datei bereitgestellt. In diesem Fall legt das Framework diesen Wert auf Separat gedumpt fest. |