查看 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 对象的信息:
使用以下 UMDF 调试器扩展之一查看主机进程中的设备堆栈:
!wudfext.umdevstacks
!wudfext.umdevstack ,如以下示例所示:
!wudfext.umdevstack <dev-stack-addr>
该信息包括每个驱动程序的驱动程序对象和设备对象。 目前,UMDF 在主机进程中只允许一个设备堆栈,因此这两个扩展的输出之间没有差异。
使用 !wudfext.wudfobject UMDF 调试器扩展查看完整的对象树,如以下示例所示:
!wudfext.wudfobject <IWDFDriver*> 1
如以下示例所示,使用 !wudfext.wudfdevice UMDF 调试器扩展来确定设备的即插即用 (PnP) 和电源管理状态:
!wudfext.wudfdevice <IWDFDevice*>
执行以下步骤以确定与设备关联的队列:
使用 !wudfext.wudfdevicequeues UMDF 调试器扩展查看与设备关联的队列。 此扩展显示队列属性、队列状态和驱动程序拥有的请求。
使用 !wudfext.wudfqueue UMDF 调试器扩展(如以下示例所示)获取有关每个队列的信息:
!wudfext.wudfqueue <IWDFIoQueue*>
使用 !wudfext.wudfrequest UMDF 调试器扩展获取有关特定请求的信息。 此信息包括基础用户模式 I/O 请求数据包 (IRP) 。 根据用户模式 IRP 信息,可以确定当前在堆栈中处理请求的位置。 还可以使用 !wudfext.umirp UMDF 调试器扩展来获取此用户模式 IRP 信息。
通过以下方法确定所有 I/O 目标:
使用 !wudfext.wudfobject UMDF 调试器扩展查看设备对象的子对象。 I/O 目标对象是设备对象的子对象。
使用 !wudfext.wudfiotarget UMDF 调试器扩展(如以下示例所示)查看有关每个 I/O 目标对象的信息:
!wudfext.wudfiotarget <IWDFTarget*>
此扩展显示目标的状态和已发送请求的列表。
目前没有允许查看所有 I/O 目标的 UMDF 调试器扩展。
使用以下 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 堆栈内文件。