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:

  • HostFailure
  • SendFailure
  • HostTimeout
  • BadRequest
  • BadReply
  • HostFailure
  • Andere
  • HostDisconnect
  • LeakedHandle
  • InvalidInterruptState
  • IsrTimedOut
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:

  • Ungültig
  • Plattform
  • Reflector
  • DriverManager
  • Host
  • Framework
  • Testen
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:

  • Intern
  • Treiber
  • Caller
  • Extern
  • UnhandledException
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.