針對 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 forcedecodeuser 和 lmu 來確認您的驅動程式裝載于目前的進程中。
檢查執行緒呼叫堆疊 (!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 軟體追蹤。