!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 显示每个递增或递减对象的引用计数的调用堆栈。 通过检查要添加但未发布的引用的 AddRefRelease 调用,可以确定调用堆栈是否导致内存泄漏。

即使 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