Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The !wudfext.wudfobject extension displays information about a WDF object, as well as its parent and child relationships.
!wudfext.wudfobject pWDFObject Flags TypeName
Parameters
pWDFObject
Specifies the address of the WDF interface to display information about.
Flags
Optional. Specifies the type of information to be displayed. Flags can be any combination of the following bits. The default value is 0x01.
Bit 0 (0x01)
Steps recursively through the object hierarchy to obtain the parent and child relationships, which are displayed.
Bit 1 (0x02)
Displays only summary information about the object.
Bit 8 (0x80)
Steps recursively through the object hierarchy, and displays details about the internal framework.
TypeName
Optional. Specifies the type of the interface (for example, IWDFDevice). If a value for TypeName is supplied, the extension uses the value as the type of the interface. If an asterisk (*) is supplied as TypeName, or if TypeName is omitted, the extension attempts to automatically determine the type of the supplied interface.
DLL
Wudfext.dll
Additional Information
For more information, see User-Mode Driver Framework Debugging.
Remarks
You can use !wudfext.wudfobject to list, for example, the child objects of an IWDFDevice object, which generally include the device's queues.
You can also use !wudfext.wudfobject to find WDF objects that are associated with a particular device, to check the state of a WDF object (for example, whether the WDF object is in the process of deletion), or to determine the WDF object's current reference count.
The !wudfext.wudfobject extension also displays the callback functions and context objects that the driver associated with each framework object and attempts to determine the framework object's type. This last feature might not work with certain compilers.
The following are some examples. In the first example, !wudfext.umdevstacks gives 0x03050E70 as the address of a device object, and this address is then passed to !wudfext.wudfobject. The 0x1 flag is included to display all the children of this object.
0: kd> !umdevstacks
Number of device stacks: 1
Device Stack: 0x038f6f08 Pdo Name: \Device\USBPDO-11
Number of UM devices: 1
Device 0
Driver Config Registry Path: WUDFOsrUsbFx2
UMDriver Image Path: D:\Windows\system32\DRIVERS\UMDF\WUDFOsrUsbFx2.dll
Fx Driver: IWDFDriver 0x3044ff0
Fx Device: IWDFDevice 0x3050e70
IDriverEntry: WUDFOsrUsbFx2!CMyDriver 0x0303eff8
Open UM files (use !umfile <addr> for details):
0x049baf84
Device XFerMode: CopyImmediately RW: Buffered CTL: Buffered
Object Tracker Address: 0x00000000
Object Tracking OFF
Refcount Tracking OFF
DevStack XFerMode: CopyImmediately RW: Buffered CTL: Buffered
0: kd> !wudfobject 0x3050e70 1
IWDFDevice 0x3050e70 Fx: 0x3050e30 [Ref 2]
15 Children
00: IWDFIoTarget 0x3056f90 Fx: 0x3056f50 [Ref 3]
No Children
01: <Internal>
02: <Internal>
03: <Internal>
04: IWDFIoQueue 0x305ae98 Fx: 0x305ae58 [Ref 8]
No Children
05: IWDFIoQueue 0x305ee98 Fx: 0x305ee58 [Ref 2]
No Children
06: IWDFIoQueue 0x3060e98 Fx: 0x3060e58 [Ref 2]
No Children
07: IWDFIoTarget 0x3066f80 Fx: 0x3066f40 [Ref 2]
1 Children
00: IWDFUsbInterface 0x306efd8 Fx: 0x306ef98 [Ref 1]
3 Children
00: IWDFIoTarget 0x3074f70 Fx: 0x3074f30 [Ref 2]
2 Children
00: IWDFMemory 0x30a4ff0 Fx: 0x30a4fb0 [Ref 2]
No Children
01: IWDFMemory 0x30aaff0 Fx: 0x30aafb0 [Ref 2]
No Children
01: IWDFIoTarget 0x3078f70 Fx: 0x3078f30 [Ref 1]
No Children
Here is an example of !wudfext.wudfobject displaying a file object:
kd> !wudfobject 0xf5060
IWDFFile 0xf5060 Fx: 0xf4fe8 [Ref 1]
State: Created Parent: 0xf2f80
No Children
Here is an example of !wudfext.wudfobject displaying a driver object:
kd> !wudfobject 0xf2db8 0x01
IWDFDriver 0xf2db8 Fx: 0xf2d40 [Ref 2]
Callback: (WUDFEchoDriver!CMyDriver, 0xf2c68)
State: Created Parent: 0
1 Children:
00: IWDFDevice 0xf2f80 Fx: 0xf2f08 [Ref 2]
State: Created Parent: 0xf2db8
5 Children:
00: IWDFIoTarget 0xf33c0 Fx: 0xf3348 [Ref 3]
State: Created Parent: 0xf2f80
No Children
01: IWDFIoQueue 0xf3500 Fx: 0xf3488 [Ref 3]
State: Created Parent: 0xf2f80
No Children
02: IWDFFile 0xf5060 Fx: 0xf4fe8 [Ref 1]
State: Created Parent: 0xf2f80
No Children
03: IWDFFile 0xf5100 Fx: 0xf5088 [Ref 101]
State: Created Parent: 0xf2f80
No Children
04: IWDFFile 0xf51a0 Fx: 0xf5128 [Ref 101]
State: Created Parent: 0xf2f80
No Children