次の方法で共有


MarkingQueuedIrps ルール (wdm)

MarkingQueuedIrps ルールは、ドライバーが IoMarkIrpPending スピン ロックを保持している間だけ、さらに処理を必要とする IRP を呼び出すよう指定します。 このルールは、ドライバーがドライバー管理のキューに IRP を追加する場合にのみ適用されます。

具体的には、ドライバーは、次の すべての イベントが発生した場合にのみ、この規則に違反します。

ドライバーは、スピン ロックを保持している間にのみ、キューに登録された IRP の IoMarkIrpPending を呼び出す必要があります。 そうしないと、IRP がデキューされ、別のドライバー ルーチンによって完了され、 IoMarkIrpPending の呼び出しが発生する前にシステムによって解放され、クラッシュが発生する可能性があります。

詳細については、 「IRP キャンセルの同期」を参照してください。

ドライバーモデル: WDM

テスト方法

コンパイル時

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

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

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

適用対象

InsertHeadListIoCallDriverIoMarkIrpPendingKeAcquireInStackQueuedSpinLockKeAcquireSpinLockKeInsertByKeyDeviceQueueKeInsertDeviceQueueKeInsertQueueDpcKeReleaseInStackQueuedSpinLockKeReleaseSpinLockPoCallDriverRemoveHeadList