Debugging Tools for Windows

!ks.dump

The !ks.dump extension displays the specified object.

Syntax

!ks.dump Object [Level] [Flags]  

Parameters

Object
Specifies a pointer to an AVStream structure, an AVStream class object, or a PortCls object. Can also specify a pointer to an an IRP or a file object.
Level
Optional. Specifies the level of detail to display on a 0-7 scale with progressively more information displayed for higher values. To display all available details, supply a value of 7. You can see more information about levels by issuing a !ks.dump command with no arguments.
Flags
Optional. Specifies the kind of information to be displayed. Flags can be any combination of the following bits.
Bit 0 (0x1)
Display all queued IRPs.
Bit 1 (0x2)
Display all pending IRPs.
Bit 2 (0x4)
Analyze a stalled graph for suspects.
Bit 3 (0x8)
Show all pin states.

DLL

Windows NT 4.0 Not available
Windows 2000 winxp\ks.dll
Windows XP and later ks.dll

Comments

The !ks.dump command recognizes most AVStream objects, including pins, filters, factories, devices, pipes, and stream pointers. This command also recognizes some stream class structures, including stream objects, filter instances, device extensions, and SRBs.

Following is an example of the !ks.dump display for a filter:

kd> !dump 829493c4
Filter object 829493c4 [CKsFilter = 82949350]
    Descriptor     f7a233c8:
    Context        829dce28

Following is an example of the !ks.dump display for a pin:

kd> !dump 8160DDE0 7
Pin object 8160DDE0 [CKsPin = 8160DD50]
    DeviceState    KSSTATE_RUN
    ClientState    KSSTATE_RUN
    ResetState     KSRESET_END
    CKsPin object 8160DD50 [KSPIN = 8160DDE0]
        State                    KSSTATE_RUN
        Processing Mutex         8160DFD0 is not held
        And Gate &               8160DF88
        And Gate Count           1


Some important parts of this display are included in the following table.

Parameter Meaning
DeviceState The state that the pin was requested to enter. If different from ClientState, this is the state that the minidriver will transition to next.
ClientState The state that the minidriver is actually in. This reflects the state of the pipe.
ResetState Indicates whether or not the object is in the middle of a flush.

KSRESET_BEGIN indicates a flush.

KSRESET_END indicates no flush.

State The internal state of the pin's transport to non-AVStream filters.

Following is an example of the !ks.dump display for a stream class driver:

kd> !dump 81a0a170 7
Device Extension 81a0a228:
    Device Object          81a0a170 [\Driver\TESTCAP]
    Next Device Object     81bd56d8 [\Driver\PnpManager]
    Physical Device Object 81bd56d8 [\Driver\PnpManager]
    REGISTRY FLAGS:
        Page out driver when closed
        No suspend if running
    MINIDRIVER Data:
        Device Extension       81a0a44c
        Interrupt Routine      00000000
        Synchronize Routine    STREAM!StreamClassSynchronizeExecution
        Receive Device SRB     testcap!AdapterReceivePacket
        Cancel Packet          testcap!AdapterCancelPacket
        Timeout Packet         testcap!AdapterTimeoutPacket
        Size (d / r / s / f)   1a0(416), 14(20), 978(2424), 0(0)
        Sync Mode              Driver Synchronizes
    Filter Type 0:
        Symbolic Links:
            Information Paged Out
        Instances:
            816b7bd8

Note that the sizes are listed both in hexadecimal numbers, and then, parenthetically in the decimal equivalent. The Size abbreviations in this display are listed in the following table.

Size Explanation
d Device
r Request
s Stream
f Filter. If the filter size is 0, the filter is single instance. If it is greater than 0, it is multi-instance.

Additional Information

For more information, see Kernel Streaming Debugging.

Build machine: CAPEBUILD