KsInvalidStreamPointer 规则 (ks)

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

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

此规则还验证 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