KeEnterCriticalRegion 関数 (ntddk.h)
KeEnterCriticalRegion ルーチンは、通常のカーネル APC の実行を一時的に無効にしますが、特別なカーネル APCs の実行を妨げるものではありません。
void KeEnterCriticalRegion();
なし
ドライバーは、このルーチンを呼び出して、このドライバーが KeLeaveCriticalRegion ルーチンを呼び出すことによって重要な領域を終了するまで、通常のカーネル APC の実行が延期される重要な領域に入ります。 KeEnterCriticalRegion の呼び出し元は、クリティカル リージョンに入った後、できるだけ早く KeLeaveCriticalRegion を呼び出す必要があります。
最上位レベルのドライバーは、現在の I/O 操作を要求したスレッドのコンテキストで実行中に KeEnterCriticalRegion を呼び出すことができます。
クリティカル リージョン内にあるスレッドでは、ユーザー APC と通常のカーネル APC の両方が無効になっていますが、特別なカーネル API は無効になっています。 これらの APC の種類の詳細については、「 APC の種類」を参照してください。
重要なリージョンは再帰的に入力でき、 KeEnterCriticalRegion の各呼び出しには 、KeLeaveCriticalRegion への一致する呼び出しが必要です。
ドライバーは、重要なリージョンを使用して、共有リソースへの排他的アクセスを取得および解放できます。 この場合は、KeEnterCriticalRegion ルーチンと KeLeaveCriticalRegion ルーチンの代わりに、ExEnterCriticalRegionAndAcquireResourceExclusive ルーチンと ExReleaseResourceAndLeaveCriticalRegion ルーチンを使用できます。 詳細については、「 ExEnterCriticalRegionAndAcquireResourceExclusive」のコード例を参照してください。
APC の詳細については、「 非同期プロシージャ 呼び出し」を参照してください。
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | ntddk.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI コンプライアンス規則 | CriticalRegions(wdm)、 HwStorPortProhibitedDDIs(storport)、 IrqlKeApcLte2(wdm)、 WithinCriticalRegion(storport)、WithinCriticalRegion(storport)、 WithinCriticalRegion(wdm) |
ExEnterCriticalRegionAndAcquireResourceExclusive