KsInvalidStreamPointer ルール (ks)

KsInvalidStreamPointer 規則は、KS ミニポート ドライバーが関数の引数として有効な KS ストリーム ポインターを提供するかどうかを確認します。 一般的な違反は、不適切なポインター処理またはメモリの不適切な使用によるポインターの破損によって発生します。

有効なストリーム ポインターは、先頭または末尾のエッジ ストリーム ポインター、または KsStreamPointerClone 経由で複製されたストリーム ポインターです。 詳細については、「先頭と末尾のエッジ ストリーム ポインター」を参照してください。

この規則では、複製されていないストリーム ポインターを削除するために KsStreamPointerDelete が使用されていないことも確認します。

ドライバー モデル: KS

このルールで見つかったバグ チェック: バグ チェック 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