共用方式為


針對 UMDF 2.0 驅動程式當機進行疑難排解

從 User-Mode Driver Framework (UMDF) 第 2 版開始,您可以使用在 Wdfkd.dll 中實作的偵錯工具擴充功能命令子集來偵錯 UMDF 驅動程式。 本文說明可用來針對 UMDF 驅動程式問題進行疑難排解的命令。

判斷 UMDF 2.0 驅動程式當機的原因

如果驅動程式主機進程已終止,您的驅動程式在回呼中可能會發生問題,導致 超過主機逾 時臨界值。 在此情況下,反映器會終止驅動程式主機進程。

若要調查,請先設定核心模式偵錯會話,如 如何啟用 UMDF 驅動程式的偵錯中所述。 強烈建議您使用連結至測試系統的核心偵錯工具執行 UMDF 驅動程式的所有開發和測試,並在 WUDFHost.exe 上啟用 應用程式驗證器 (AppVerif.exe) 。 使用下列命令,附加核心偵錯工具,然後重新開機。

AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
  • 如果已設定 HostFailKdDebugBreak ,當超過逾時臨界值時,反映器會中斷進入核心模式偵錯工具。 在偵錯工具輸出中,您會看到數個如何開始的建議,包括您可以選取的連結。 例如:

    **** Problem detected in UMDF driver "WUDFOsrUsbFx2". !process 0xFFFFE0000495B080 0x1f, !devstack 0xFFFFE000032BFA10, Problem code 3 ****
    **** Dump UMDF driver image name and stack: !wdfkd.wdfumdevstack 0x000000BEBB49AE20
    **** Dump UM Irps for this stack: !wdfkd.wdfumirps 0x000000BEBB49AE20
    **** Dump UMDF trace log: !wmitrace.logdump WUDFTrace
    **** Helpful UMDF debugger extension commands: !wdfkd.wdfhelp
    **** Note that driver host process may get terminated if you go past this break, making it difficult to debug the problem!
    
  • 使用 !analyze 來顯示失敗的相關資訊,以及您可以嘗試的其他 UMDF 擴充功能命令。 此命令可協助解決 UMDF 驗證程式失敗或 UMDF 未處理的例外狀況。 您可以使用它進行即時核心偵錯,或從 %ProgramData%\Microsoft\WDF 偵錯使用者損毀傾印檔案。

  • 使用 !process 0 0x1f wudfhost.exe 列出所有 Wudfhost.exe 驅動程式主機進程,包括執行緒堆疊資訊。

    您也可以使用 !wdfkd.wdfumtriage 和 !wdfkd.wdfldr 來顯示目前系結至 WDF 的所有驅動程式。 當您選取 UMDF 驅動程式的映射名稱時,偵錯工具會顯示裝載進程的位址。 然後,您可以選取進程位址,以顯示該程式特有的資訊。

  • 如有必要,請使用 .process /r /p 進程 ,將進程內容切換至裝載您驅動程式的 Wudfhost 進程。 使用 .cache forcedecodeuserlmu 來確認您的驅動程式裝載于目前的進程中。

  • 檢查執行緒呼叫堆疊 (!thread Address) ,以判斷驅動程式回呼是否逾時。查看執行緒的刻度計數。 在Windows 8.1中,反映器會在一分鐘後逾時。

  • 使用 !wdfkd.wdfdriverinfo MyDriver.dll 0x10 以詳細資訊形式顯示裝置樹狀結構。 然後選取 !wdfdevice。 此命令會顯示詳細的電源、電源原則和隨插即用 (PnP) 狀態資訊。

  • 使用 !wdfkd.wdfumirps 來尋找擱置的 IRP。

  • 使用 !wdfkd.wdfdevicequeues 來檢查驅動程式佇列的狀態。

  • 在核心模式偵錯會話中,您可以使用 !wmitrace.logdump WudfTrace 來顯示追蹤記錄。

顯示 UMDF 2.0 IFR 記錄檔

在核心模式偵錯會話中,您可以使用 !wdfkd.wdflogdump 擴充功能命令來顯示 Windows Driver Frameworks (WDF) In-flight Recorder (IFR) 記錄檔記錄。

尋找記憶體傾印檔案

如需尋找使用者模式傾印檔案的相關資訊 ,請參閱判斷反映器終止主機進程 的原因。 如需如何設定LogMinidumpType登錄值,以指定儲存在迷你傾印檔案中的資訊類型,請參閱在 UMDF 驅動程式中使用 WPP 軟體追蹤