Debugging Tools for Windows

!ks.forcedump

The !ks.forcedump command displays information about memory contents at a caller-supplied address.

Syntax

!ks.forcedump Object Type [Level

Parameters

Object
Specifies a pointer to the object for which to display information.
Type
Specifies the type of object.

For AVStream/KS objects, Type must be one of the following values: CKsQueue, CKsDevice, CKsFilterFactory, CKsFilter, CKsPin, CKsRequestor, CKsSplitter, CKsSplitterBranch, CKsPipeSection, KSPIN, KSFILTER, KSFILTERFACTORY, KSDEVICE, KSSTREAM_POINTER, KSPFRAME_HEADER, KSIOBJECT_HEADER, KSPDO_EXTENSION, KSIDEVICE_HEADER, KSSTREAM_HEADER, KSPIN_DESCRIPTOR_EX, CKsProxy, CKsInputPin, CKsOutputPin, CasyncItemHandler.

For Port Class objects, Type must be one of the following values: DEVICE_CONTEXT, CPortWaveCyclic, CPortPinWaveCyclic, CPortTopology, CPortDMus, CIrpStream, CKsShellRequestor, CPortFilterWaveCyclic, CDmaChannel, CPortWavePci, CportPinWavePci.

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.

DLL

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

Comments

Normally, you can use !ks.dump to display data structures.

However, if symbols are loaded incorrectly or too much information is paged out, the type identification logic in the !ks.dump command may fail to identify the type of structure at a given address.

If this happens, try using the !ks.forcedump command. This command works just like !ks.dump except that the user specifies the type of the object.

Note  The !ks.forcedump command does not verify that Type is the correct type of structure found at the address provided in Object. The command assumes that this is the type of structure found at Object and displays data accordingly.

A listing of all supported objects can be retrieved by issuing a !ks.forcedump command with no arguments.

Here are two examples of the output from !ks.forcedump, using the address of a filter for the Object argument but with different levels of detail:

kd> !forcedump 829493c4 KSFILTER
WARNING: I am dumping 829493c4 as a KSFILTER.
         No checking has been performed to ensure that it is this type!!!

Filter object 829493c4 [CKsFilter = 82949350]
    Descriptor     f7a233c8:
    Context        829dce28

kd> !forcedump 829493c4 KSFILTER 7
WARNING: I am dumping 829493c4 as a KSFILTER.
         No checking has been performed to ensure that it is this type!!!

Filter object 829493c4 [CKsFilter = 82949350]
    Descriptor     f7a233c8:
    Filter Category GUIDs:
        Video
        Capture
    Context        829dce28
    INTERNAL INFORMATION:
        Public Parent Factory   829782dc
        Aggregated Unknown      00000000
        Device Interface        823b83c8
        Control Mutex           829493f8 is not held
    Object Event List:
        None
    CKsFilter object 82949350 [KSFILTER = 829493c4]
        Processing Mutex         82949484 is not held
        Gate &                   82949464
        Gate.Count               1
        Pin Factories:
            Pin ID 0 [Video/General Capture Out]:
                Child Count        1
                Bound Child Count  1
                Necessary Count    0
                Specific Instances:
                    8293f580 

Additional Information

For more information, see Kernel Streaming Debugging.

Build machine: CAPEBUILD