檢視 UMDF 物件

警告

UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 撰寫。 未將新功能新增至 UMDF 1,且較新版本的WINDOWS 10上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。

封存的 UMDF 1 範例可在Windows 11 22H2 - 2022 年 5 月驅動程式範例更新中找到。

如需詳細資訊,請參閱使用 UMDF 消費者入門

本主題描述如何使用 Wudfext.dll 偵錯工具延伸模組來檢視 User-Mode Driver Framework (UMDF) 第 1 版驅動程式所使用的物件相關資訊。

從 UMDF 第 2 版開始,您應該改用 Wdfkd.dll 偵錯工具擴充功能。 如需詳細資訊,請參閱 Windows Driver Framework Extensions (Wdfkd.dll)

您可以執行下列步驟來檢視 UMDF 第 1 版物件的相關資訊:

  1. 使用下列其中一個 UMDF 偵錯工具擴充功能來檢視主機進程中的裝置堆疊:

    • !wudfext.umdevstacks

    • !wudfext.umdevstack ,如下列範例所示:

      !wudfext.umdevstack < dev-stack-addr>

      此資訊包括每個驅動程式的驅動程式物件和裝置物件。 目前,UMDF 只允許主機進程中的一個裝置堆疊,因此這兩個延伸模組的輸出之間沒有任何差異。

  2. 使用 !wudfext.wudfobject UMDF 偵錯工具延伸模組來檢視完整的物件樹狀結構,如下列範例所示:

    !wudfext.wudfobject < IWDFDriver* > 1

  3. 使用!wudfext.wudfdevice UMDF 偵錯工具延伸模組,如下列範例所示,判斷裝置的 隨插即用 (PnP) 和電源管理狀態:

    !wudfext.wudfdevice < IWDFDevice*>

  4. 執行下列步驟來判斷與裝置相關聯的佇列:

    1. 使用 !wudfext.wudfdevicequeues UMDF 偵錯工具擴充功能來檢視與裝置相關聯的佇列。 此延伸模組會顯示佇列屬性、佇列狀態和驅動程式擁有的要求。

    2. 使用 !wudfext.wudfqueue UMDF 偵錯工具延伸模組,如下列範例所示,以取得每個佇列的相關資訊:

      !wudfext.wudfqueue < IWDFIoQueue*>

  5. 使用 !wudfext.wudfrequest UMDF 偵錯工具延伸模組來取得特定要求的相關資訊。 此資訊包括基礎使用者模式 I/O 要求封包 (IRP) 。 從使用者模式 IRP 資訊中,您可以判斷目前在堆疊中處理要求的位置。 您也可以使用 !wudfext.umirp UMDF 偵錯工具延伸模組來取得此使用者模式 IRP 資訊。

  6. 判斷所有 I/O 目標,方法是:

    1. 使用 !wudfext.wudfobject UMDF 偵錯工具延伸模組來檢視裝置物件的子物件。 I/O 目標物件是裝置物件的子物件。

    2. 使用 !wudfext.wudfiotarget UMDF 偵錯工具延伸模組,如下列範例所示,以檢視每個 I/O 目標物件的相關資訊:

      !wudfext.wudfiotarget IWDFTarget < *>

      此延伸模組會顯示目標的狀態和已傳送的要求清單。

    目前沒有任何 UMDF 偵錯工具擴充功能可讓您檢視所有 I/O 目標。

  7. 使用下列 UMDF 偵錯工具延伸模組來檢視檔案物件的相關資訊:

    !wudfext.wudfrequest!wudfext.umirp
    使用 !wudfext.wudfrequest!wudfext.umirp UMDF 偵錯工具延伸模組來檢視屬於裝置物件的子物件檔案。

    !wudfext.wudffile
    使用 !wudfext.wudffile UMDF 偵錯工具延伸模組,如下列範例所示,以檢視架構檔案的相關資訊:

    !wudfext.wudffile < IWDFFile*>

    !wudfext.umfile
    使用 !wudfext.umfile UMDF 偵錯工具延伸模組,如下列範例所示,檢視 UMDF 內部堆疊檔案 (的相關資訊,也就是堆疊中驅動程式所建立的檔案物件,而不是應用程式所建立的檔案物件,或由另一個堆疊中的驅動程式所建立的檔案物件) :

    !wudfext.umfile < addr>

    在某些情況下,可能沒有對應的架構檔案,而且使用者模式 IRP 資訊可能包含 UMDF 內部堆疊檔案。

    !wudfext.umfile顯示的資訊包含任何排入佇列至 UMDF 內部堆疊檔案的 IRP。 只有驅動程式建立的檔案會追蹤排入佇列至這些檔案的使用者模式 IRP。 針對應用程式建立的檔案,I/O 管理員會追蹤核心模式 IRP。

    !wudfext.umdevstacks!wudfext.umdevstack
    使用 !wudfext.umdevstacks!wudfext.umdevstack UMDF 偵錯工具延伸模組的輸出,以檢視對應至驅動程式建立檔案的未處理 UMDF 內部堆疊檔案。