查看 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 驱动程序框架 (UMDF) 版本 1 驱动程序使用的对象的信息。

从 UMDF 版本 2 开始,应改用 Wdfkd.dll 调试器扩展。 有关详细信息,请参阅 Windows 驱动程序框架扩展 (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*>

      此扩展显示目标的状态和已发送请求的列表。

    目前没有允许查看所有 I/O 目标的 UMDF 调试器扩展。

  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 堆栈内文件。