QueuedSpinLock ルール (wdm)

QueuedSpinLock 規則は、ドライバーが KeReleaseInStackQueuedSpinLock を呼び出す前に KeAcquireInStackQueuedSpinLock を呼び出し、ドライバーが KeAcquireInStackQueuedSpinLock への後続の呼び出しの前に KeReleaseInStackQueuedSpinLock を呼び出すことを指定します。

入れ子になった呼び出しは、異なるリソースを取得して解放する場合に許可されます。 同じリソースを取得または解放するための入れ子になった呼び出しは、この規則に違反します。

この規則では、ディスパッチ ルーチンまたはキャンセル ルーチンが終了する前に、キューに入っているすべてのスピン ロックを解放するために、ドライバーが KeReleaseInStackQueuedSpinLock を呼び出していることも指定します。

ドライバーモデル: WDM

このルールで見つかったバグ チェック: バグ チェック 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040006)

テスト方法

コンパイル時

静的ドライバー検証 を実行し、 QueuedSpinLock 規則を指定します。

コードの分析を実行するには、次の手順に従います。
  1. コードを準備します (ロール型宣言を使用します)。
  2. 静的ドライバー検証ツールを実行します。
  3. 結果を表示および分析します。

詳細については、 「静的ドライバー検証ツールを使用してドライバー の欠陥を見つける」を参照してください。

実行時

ドライバー検証ツール を実行し、 DDI コンプライアンス チェック オプションを選択します。

適用対象

KeAcquireInStackQueuedSpinLockKeReleaseInStackQueuedSpinLock