次の方法で共有


ExEnterCriticalRegionAndAcquireResourceExclusive 関数 (wdm.h)

ExEnterCriticalRegionAndAcquireResourceExclusive ルーチンは、最初にクリティカル リージョンに入り、指定されたリソースへの排他アクセス権を取得します。

構文

PVOID ExEnterCriticalRegionAndAcquireResourceExclusive(
  PERESOURCE Resource
);

パラメーター

Resource

[入力、出力]排他アクセス用に取得するリソースへのポインター。 このパラメーターは、呼び出し元によって割り当てられた ERESOURCE 構造体を 指します。 呼び出し元は、以前に非ページ プールからこの構造体を割り当て、 ExInitializeResourceLite ルーチンまたは ExReinitializeResourceLite ルーチンを呼び出して初期化しました。

戻り値

不透明なシステム構造へのポインター。 ドライバーは、この戻り値を無視する必要があります。

注釈

指定したリソースが排他アクセスにすぐに使用できないときにこのルーチンが呼び出された場合、呼び出し元のスレッドはリソースが使用可能になるまでブロックされます。

ドライバー スレッドが重要なリージョンで実行されている間、ドライバーのユーザー APC と通常のカーネル APC は実行されません。 特別なカーネル API は引き続き実行されます。 これらの APC の種類の詳細については、「 APC の種類」を参照してください。

通常のカーネル APC を一時的に無効にすると、 ExEnterCriticalRegionAndAcquireResourceExclusive は、パッシブ レベルの呼び出しスレッドが APC によって割り込まれるのを防ぎ、スレッドは APC がアクセスしようとする共有リソースを保持します。

呼び出し元のスレッドはクリティカルリージョンに留まり、指定されたリソースを必要以上に保持する必要はありません。 指定したリソースを解放し、クリティカル リージョンから移動するには、 ExReleaseResourceAndLeaveCriticalRegion ルーチンを呼び出します。

ERESOURCE 構造体を使用してリソースへの排他アクセスを同期する方法の詳細については、「ERESOURCE ルーチンの概要」を参照してください。 クリティカル リージョンへの入退出の詳細については、「 クリティカル リージョン」と「保護されたリージョン」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2003 SP1
Header wdm.h
IRQL <= APC_LEVEL
DDI コンプライアンス規則 CriticalRegions(wdm), HwStorPortProhibitedDDIs(storport)

こちらもご覧ください

ERESOURCE

ExAcquireResourceExclusiveLite

ExInitializeResourceLite

ExReinitializeResourceLite

ExReleaseResourceLite

ExReleaseResourceAndLeaveCriticalRegion

KeEnterCriticalRegion

KeLeaveCriticalRegion