!wudfext.wudfrefhist
!wudfext.wudfrefhist 扩展显示 UMDF 对象的引用计数堆栈历史记录。
!wudfext.wudfrefhist ObjectAddress
参数
ObjectAddress
指定要显示其引用计数堆栈历史记录的 UMDF 对象的地址。 请注意,这是对象本身的地址,而不是接口的地址。
DLL
Wudfext.dll
其他信息
有关详细信息,请参阅用户模式驱动程序框架调试。
注解
UMDF 1.11 不支持 !wudfext.wudfrefhist 命令。
ObjectAddress 参数必须是 UMDF 对象的地址,而不是接口的地址(由许多其他 UMDF 扩展命令使用)。 要确定 UMDF 对象的地址,请使用 !wudfext.wudfdumpobjects 命令,该命令同时显示 UMDF 对象地址和接口地址。 或者,如果知道接口的地址,则可以将其用作 !wudfext.wudfobject 命令的参数,该命令显示对象地址(在符号“Fx:”后面显示)。
如果在 WDF 验证器中启用了引用计数跟踪选项 (TrackRefCounts),则可以使用 !wudfext.wudfrefhist 显示每个递增或递减对象的引用计数的调用堆栈。 通过检查要添加但未发布的引用的 AddRef 和 Release 调用,可以确定调用堆栈是否导致内存泄漏。
即使 UMDF 未进入调试器,也可以随时使用此命令。
如果此命令未显示所需信息,请确保相关数据已换入,然后重试。
下面是使用 !wudfext.wudfrefhist 命令的示例:
0:007> !wudfext.umdevstacks
...
UMDriver Image Path: C:\Windows\System32\drivers\UMDF\WUDFOsrUsbFilter.dll
Object Tracker Address: 0x0000003792ee9fc0
Object Tracking ON
Refcount Tracking ON
0:007> !wudfext.wudfdumpobjects 0x0000003792ee9fc0
...
WdfTypeIoQueue Object: 0x0000003792f05ce0, Interface: 0x0000003792f05d58
## 0:007> !wudfext.wudfrefhist 0x0000003792f05ce0
-----------------------------------------------------------------------
## 2 (++)
-----------------------------------------------------------------------
WUDFx!UfxObject::TrackRefCounts+0xb2
WUDFx!CWdfIoQueue::AddRef+0x17adc
WUDFx!CWdfIoQueue::CreateAndInitialize+0xeb
WUDFx!CWdfDevice::CreateIoQueue+0x1e7
WUDFOsrUsbFilter!CMyQueue::Initialize+0x48
WUDFOsrUsbFilter!CMyDevice::Configure+0x7d
WUDFOsrUsbFilter!CMyDriver::OnDeviceAdd+0xca
WUDFx!CWdfDriver::OnAddDevice+0x486
WUDFx!CWUDF::AddDevice+0x43
WUDFHost!CWudfDeviceStack::LoadDrivers+0x320
WUDFHost!CLpcNotification::Message+0x1340
WUDFPlatform!WdfLpcPort::ProcessMessage+0x140
WUDFPlatform!WdfLpcCommPort::ProcessMessage+0x92
WUDFPlatform!WdfLpc::RetrieveMessage+0x20c
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈