CriticalRegions ルール (wdm)
CriticalRegions 規則は、ドライバーが KeLeaveCriticalRegion を呼び出す前に KeEnterCriticalRegion を呼び出す必要があり、その後の KeEnterCriticalRegion への呼び出しの前に、ドライバーが KeLeaveCriticalRegion を呼び出す必要があることを指定します。 (入れ子になった呼び出しは許可されます。)
この規則では、ドライバーが戻る前に通常のカーネル非同期プロシージャ呼び出し (APC) の配信を再度有効にする KeLeaveCriticalRegion を呼び出すも指定します。
KeEnterCriticalRegion と KeLeaveCriticalRegion の WDK ドキュメントでは、これらの関数の呼び出し元を IRQL<=APC_LEVEL で実行できることを説明しています。 この状況では、この規則によってベスト プラクティスの推奨事項が適用されます。
ドライバーモデル: WDM
このルールで見つかったバグ チェック: バグ チェック 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040003)
テスト方法
コンパイル時 |
---|
静的ドライバー検証ツール を実行し、 CriticalRegions 規則を指定します。 コードの分析を実行するには、次の手順に従います。詳細については、 「静的ドライバー検証ツールを使用してドライバー の欠陥を見つける」を参照してください。 |
実行時 |
---|
ドライバー検証ツール を実行し、 DDI コンプライアンス チェック (追加) オプションを選択します。 |
適用対象
ExEnterCriticalRegionAndAcquireResourceExclusiveExReleaseResourceAndLeaveCriticalRegionKeEnterCriticalRegionKeLeaveCriticalRegion