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