共用方式為


存取 WER 報表中的 UMDF 中繼資料

本主題描述當User-Mode Driver Framework (UMDF) 當機時,作業系統所建立Windows 錯誤報告 (WER) 的位置和內容。

系統會針對三種不同的 UMDF 事件種類產生 WER 報告: WUDFHostProblemWUDFUnhandledExceptionWUDFVerifierFailure

當反映器終止驅動程式主機進程時,有時因為 超過主機逾 時臨界值,系統會產生名為 Report.wer 的檔案,其中包含 WER 資訊。 具體而言,Report.wer 包含 UMDF 中繼資料,如果您嘗試偵錯 UMDF 驅動程式且無法存取即時偵錯目標,可能會很有説明。

在 Windows 8.1中,您可以在 C:\ProgramData\Microsoft\Windows\WER\ReportQueue 目錄中找到 Report.wer 檔案。 在此目錄中,開啟最新的 NonCritical_HostProblem_* 資料夾,然後找出 Report.wer。

您也可以使用下列 PowerShell 命令來存取 UMDF 的 WER 報告:

get-winevent -providername "Windows Error Reporting" | where-object {$_.Message -like "*wudf*"} | format-list | out-file UmdfReports.txt

WUDFHostProblem 範例報表

以下是 WUDFHostProblem 類型的 UMDF WER 報告範例。 它是從上述 ReportQueue 目錄取得的。 如果您使用 PowerShell 來擷取報表,欄位可能會標示為 P0、P1、P2,而不是 Sig[0]、Sig[1]、Sig[2]。 否則,欄位會相同,並包含相同的可能值。 此範例是從其中一個使用 OSR USB-FX2 硬體參考面板的 WDK 範例產生。

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 欄位

下表描述WUDFHostProblem類型報表中欄位的可能值。

索引 名稱
0 EventClass

架構會將此值設定為 HostProblem

1 問題

此欄位包含下列其中一個值:

  • HostFailure
  • SendFailure
  • HostTimeout
  • BadRequest
  • BadReply
  • HostFailure
  • 其他
  • HostDisconnect
  • LeakedHandle
  • InvalidInterruptState
  • IsrTimedOut
2 DetectedBy

包含下列其中一個列舉值:

cpp WdfComponentInvalid = 0, WdfComponentPlatform, WdfComponentReflector, WdfComponentDriverManager, WdfComponentHost, WdfComponentFramework, WdfComponentTest, WdfComponentMax
3 UMDFVersion

指定目前使用的 UMDF 程式庫版本。 請注意,如果使用者採取更新架構程式庫的動作,這可能是作業系統隨附的版本。

4 ExitCode

包含下列其中一個列舉值:

cpp WdfHostExit_StillActive = 0x103, WdfHostExit_CodeUnknown = 0x70000000, WdfHostExit_InternalDriverStopReported, WdfHostExit_InternalDriverStopReportFailed, WdfHostExit_ExternalTermination

WdfHostExit_StillActive 表示主機進程在架構建立錯誤報表時正在執行。

5 作業

包含下列其中一個列舉值:

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 訊息

第一個數位是這個欄位的一律為 1,這表示 IRP 涉及作業。 後續的數位配對分別表示 IRP 的 MajorFunctionMinorFunction

例如,在上述範例報告中,此欄位包含值 11b00。 這表示作業是代表驅動程式主機進程處理的 IRP,其主要函式值為 IRP_MJ_PNP,次要函式值為 IRP_MN_START_DEVICE (1 = IRP 訊息,1b = IRP_MJ_PNP,00 = IRP_MN_START_DEVICE) 。

7 狀態

架構一律會將此值設定為 0xffffffff。

8 HardwareId

此欄位包含與發生問題的驅動程式相關聯的裝置硬體識別碼。

WUDFUnhandledException 欄位

下表描述 WUDFUnhandledException類型報表中欄位的可能值。

索引 名稱
0 EventClass

架構會將此值設定為 UnhandledException

1 元件

此欄位包含下列其中一個值:

  • 無效
  • 平台
  • Reflector
  • DriverManager
  • 主機
  • Framework
  • 測試
2 ExceptionCode

發生例外狀況的原因。 如需值清單,請參閱 EXCEPTION_RECORD

3 RelativeFaultingAddress

發生例外狀況的位址。

4 CrashingModuleName 引發例外狀況的驅動程式名稱。
5 CrashingFileVersion 驅動程式的架構版本。
6 LastDriverName 驅動程式堆疊中第一個非 UMDF 驅動程式元件的名稱。
7 LastDriverVersion 驅動程式堆疊中第一個非 UMDF 驅動程式元件的版本號碼。
8 UMDFVersion

指定目前使用的 UMDF 程式庫版本。 請注意,如果使用者採取更新架構程式庫的動作,這可能是作業系統隨附的版本。

9 HardwareId

從 Windows 8 開始,硬體識別碼會在個別的檔案中提供。 在此情況下,架構會將此值設定 為 [個別傾印]。

WUDFVerifierFailure 欄位

下表描述 WUDFVerifierFailure之報表中欄位的可能值。

索引 名稱
0 EventClass

架構會將此值設定為 VerifierFailure

1 FoundBy

架構會將此值設定為 Framework

2 類別

此欄位包含下列其中一個值:

  • 內部
  • 驅動程式
  • 呼叫者
  • 外部
  • 未處理的例外狀況
3 錯誤號碼 僅供內部使用。
4 位置 僅供內部使用。
5 驅動程式 失敗的驅動程式模組名稱。
6 CallerAddress 起始產生報表之常式的位址。
7 UMDFVersion

指定目前使用的 UMDF 程式庫版本。 請注意,如果使用者採取更新架構程式庫的動作,這可能是作業系統隨附的版本。

8 HardwareId

從 Windows 8 開始,硬體識別碼會在個別的檔案中提供。 在此情況下,架構會將此值設定 為 [個別傾印]。