ExAcquireResourceExclusiveLite 関数 (wdm.h)
ExAcquireResourceExclusiveLite ルーチンは、呼び出し元スレッドによる排他アクセスのために、指定されたリソースを取得します。
構文
BOOLEAN ExAcquireResourceExclusiveLite(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
パラメーター
[in, out] Resource
取得するリソースへのポインター。
[in] Wait
リソースをすぐに取得できない場合のルーチンの動作を指定します。 TRUE の 場合、呼び出し元はリソースを取得できるまで待機状態になります。 FALSE の 場合、リソースを取得できるかどうかに関係なく、ルーチンは直ちに戻ります。
戻り値
リソースが取得された場合、ExAcquireResourceExclusiveLite は TRUE を 返します。 このルーチンは、入力 Wait が FALSE で、排他アクセスをすぐに許可できない場合に FALSE を 返します。
注釈
次の一覧では、呼び出し元に特定のリソースへの排他アクセス権が付与されるかどうかとタイミングについて説明します。
リソースが現在所有されていない場合、現在のスレッドへの排他アクセスが直ちに付与されます。
呼び出し元が排他アクセス用のリソースを既に取得している場合、現在のスレッドには同じ種類のアクセスが再帰的に付与されます。
呼び出し元がリソースへの共有アクセス権を持っている場合、呼び出し元はロックを解放してから排他的に再取得する必要があります。
リソースが現在別のスレッドによって排他的として所有されている場合、または呼び出し元がリソースへの共有アクセスのみを持っている場合、現在のスレッドはリソースを取得できるまで待機状態になります。
注意
2 つのスレッドがそれぞれ同じリソースに対して共有ロックを保持し、両方が共有ロックを解放せずに排他的にロックを取得しようとすると、デッドロックが発生します。 つまり、各スレッドは、他のスレッドがロックの共有ホールドを解放するのを待ち、もう一方のスレッドがロックを解除するまで共有ホールドを解放しません。
呼び出し元は、 ExReleaseResourceLite または ExReleaseResourceForThreadLite を呼び出すことによって、リソースを解放できます。
このルーチンを呼び出す前に、通常のカーネル APC 配信を無効にする必要があります。 KeEnterCriticalRegion を呼び出して、通常のカーネル APC 配信を無効にします。 リソースが解放されるまで配信を無効にしたままにする必要があります。その時点で 、KeLeaveCriticalRegion を呼び出して再び有効にすることができます。 詳細については、「 APCs の無効化」を参照してください。
要件
| サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
| 対象プラットフォーム | ユニバーサル |
| Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
| Library | NtosKrnl.lib |
| [DLL] | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |
| DDI コンプライアンス規則 | ExclusiveResourceAccess(wdm)、 HwStorPortProhibitedDDIs(storport)、 IrqlExApcLte3(wdm)、 WithinCriticalRegion(storport)、WithinCriticalRegion(storport)、 WithinCriticalRegion(wdm) |
関連項目
ExIsResourceAcquiredExclusiveLite
フィードバック
フィードバックの送信と表示