KsInvalidStreamPointer rule (ks)

The KsInvalidStreamPointer rule verifies if a KS miniport driver provides a valid KS Stream Pointer as a function argument. Typical violations are caused by incorrect pointer handling or a pointer corruption caused by incorrect use of memory.

A valid stream pointer is a leading or trailing edge stream pointer or a stream pointer that has been cloned via KsStreamPointerClone. For more information see Leading and Trailing Edge Stream Pointers.

This rule also verifies that KsStreamPointerDelete has not been used to attempt to delete a non-cloned stream pointer.

Driver model: KS

Bug check(s) found with this rule: Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x0008100C)

Example

The following code violates this rule.

PKKSSTREAM_POINTER StreamPointer = KsPinGetLeadingEdgeStreamPointer (Pin, KSSTREAM_POINTER_STATE_UNLOCKED);

//
// ERROR: KsStreamPointerDelete can only be called on clone stream pointers.
//

KsStreamPointerDelete (StreamPointer);

This code also violates the rule.

KsStreamPointerDelete (NULL);

How to test

At run time

To verify this rule, open a Command Prompt window. Enter a Driver Verifier command and specify /domain ks.

For example:

For more information, see Driver Verifier.

verifier /domain ks [options] /driver <yourdriver>

At run time

Run Driver Verifier and select the DDI compliance checking option.

Applies to

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock