KsInvalidStreamPointer 规则 (ks)

KsInvalidStreamPointer 规则验证 KS 微型端口驱动程序是否提供有效的 KS 流指针作为函数参数。 典型的冲突是由不正确的指针处理或由于内存使用不正确导致的指针损坏引起的。

有效的流指针是前导或尾随边缘流指针或通过 KsStreamPointerClone 克隆的流指针。 有关详细信息,请参阅 前导和尾随边缘流指针

此规则还验证 KsStreamPointerDelete 尚未用于尝试删除未克隆的流指针。

驱动程序模型:KS

使用此规则找到的 Bug 检查: Bug 检查0xC4:DRIVER_VERIFIER_DETECTED_VIOLATION (0x0008100C)

示例

以下代码违反了此规则。

PKKSSTREAM_POINTER StreamPointer = KsPinGetLeadingEdgeStreamPointer (Pin, KSSTREAM_POINTER_STATE_UNLOCKED);

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

KsStreamPointerDelete (StreamPointer);

此代码还违反了规则。

KsStreamPointerDelete (NULL);

如何测试

运行时

若要验证此规则,请打开命令提示符窗口。 输入驱动程序验证程序命令并指定 /domain ks

例如:

有关详细信息,请参阅驱动程序验证程序

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

运行时

运行 驱动程序验证程序 并选择 DDI 符合性检查 选项。

适用于

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock