共用方式為


針對UMDF 2.0驅動程序當機進行疑難解答

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

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

如果驅動程式主機處理程序被終止,您的驅動程式可能在回調中遇到問題,導致超過 主機超時 臨界值。 在此情況下,反映器會終止驅動程式主機進程。

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

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) 飛行記錄器 (IFR) 日誌記錄內容。

尋找記憶體轉儲檔案

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