QueuedSpinLock Rule (WDM)

QueuedSpinLock ルールは、ドライバーが KeReleaseInStackQueuedSpinLock の呼び出し前に KeAcquireInStackQueuedSpinLock を呼び出すこと、および以降の KeAcquireInStackQueuedSpinLock の呼び出し前に KeReleaseInStackQueuedSpinLock を呼び出すことを規定します。

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

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

ドライバー モデルWDM
この規則で見つかったバグ チェック Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040006)

テスト方法

コンパイル時

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

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

詳しくは、「ドライバーの不具合を見つけるための静的ドライバー検証ツールの使用」をご覧ください。

実行時

ドライバー検証ツールを実行し、DDI 準拠の検査オプションを選びます。

 

適用対象

KeAcquireInStackQueuedSpinLock
KeReleaseInStackQueuedSpinLock

 

 

表示:
© 2015 Microsoft