次の方法で共有


ExAcquireSharedStarveExclusive 関数 (wdm.h)

ExAcquireSharedStarveExclusive ルーチンは、同じリソースへの排他的アクセスの取得を保留中の試行を待たずに、共有アクセス用の特定のリソースを取得します。

構文

BOOLEAN ExAcquireSharedStarveExclusive(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

パラメーター

[in, out] Resource

共有アクセス用に取得するリソースへのポインター。

[in] Wait

リソースをすぐに取得できない場合のルーチンの動作を指定します。 TRUE 場合、呼び出し元はリソースを取得できるようになるまで待機状態になります。 FALSE 場合、リソースを取得できるかどうかに関係なく、ルーチンは直ちに戻ります。

戻り値

ExAcquireSharedStarveExclusive 、要求されたアクセス権が付与されている場合 TRUE を返します。 このルーチンは、入力 待機 が FALSE され、共有アクセスをすぐに許可できない場合に、FALSE を返します。

備考

呼び出し元に特定のリソースへの共有アクセス権が付与されるかどうかは、次によって異なります。

  • リソースが現在所有されていない場合は、現在のスレッドに対してすぐに共有アクセスが許可されます。
  • 呼び出し元が既にリソースを取得している場合 (共有または排他アクセスの場合)、現在のスレッドには同じ種類のアクセスが再帰的に付与されます。 この呼び出しを行しても、呼び出し元の特定のリソースの排他アクセスは共有アクセスに変換されないことに注意してください。
  • リソースが現在別のスレッドによって共有されている場合、別のスレッドがそのリソースへの排他アクセスを待機している場合でも、共有アクセスは呼び出し元にすぐに付与されます。
  • リソースが現在別のスレッドによって排他的として所有されている場合、呼び出し元は待機状態 (待機 が TRUE に設定) に設定されるか、ExAcquireSharedStarveExclusive FALSEを返します。
ExAcquireSharedStarveExclusive の呼び出し元は、通常、排他的アクセサーが冗長な作業を行うことを防ぐために、共有リソースにすばやくアクセスする必要があります。 たとえば、キャッシュ マネージャーがリソースへの排他アクセス権を取得してキャッシュをディスクに書き込む前に、ファイル システムがこのルーチンを呼び出して、キャッシュに固定された BCB などのキャッシュされたリソースを変更できます。

このルーチンを呼び出す前に、通常のカーネル APC 配信を無効にする必要があります。 KeEnterCriticalRegionを呼び出して、通常のカーネル APC 配信を無効にします。 配信は、リソースが解放されるまで無効なままにする必要があります。その時点で、KeLeaveCriticalRegionを呼び出すことによって再び有効にすることができます。 詳細については、「APCsの無効化」を参照してください。

呼び出し元は、ExReleaseResourceLite または ExReleaseResourceForThreadLite 呼び出すことによって、リソースを解放できます。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

関連項目

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite

ExGetExclusiveWaiterCount する

ExIsResourceAcquiredExclusiveLite

ExIsResourceAcquiredSharedLite