次の方法で共有


FltAcquireResourceShared 関数 (fltkernel.h)

FltAcquireResourceShared ルーチンは、呼び出し元スレッドによる共有アクセス用の指定されたリソースを取得します。

構文

VOID FLTAPI FltAcquireResourceShared(
  [in/out] PERESOURCE Resource
);

パラメーター

[in/out] Resource

不透明な ERESOURCE 構造体へのポインター。 この構造体は、非ページ プールから呼び出し元によって割り当てられ 、ExInitializeResourceLite または ExReinitializeResourceLite を呼び出すことによって初期化される必要があります。

戻り値

[なし] :

解説

FltAcquireResourceShared ルーチンは、呼び出し元スレッドによる共有アクセス用の指定されたリソースを取得します。

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

  • リソースが現在所有されていない場合は、現在のスレッドに対してすぐに共有アクセスが許可されます。

  • 呼び出し元が (共有または排他アクセス用に) リソースを既に取得している場合、現在のスレッドには同じ種類のアクセスが再帰的に付与されます。 この呼び出しを行しても、特定のリソースの呼び出し元の排他的所有権は共有に変換されないことに注意してください。

  • リソースが現在、別のスレッドによって共有されているとして所有されていて、リソースへの排他的アクセスを待機しているスレッドがない場合、共有アクセスはすぐに呼び出し元に付与されます。 排他ウェイターがある場合、呼び出し元は待機状態になります。

  • リソースが現在別のスレッドによって排他的として所有されている場合、または排他的アクセスを待機している別のスレッドがあり、呼び出し元がまだリソースへの共有アクセス権を持っていない場合、現在のスレッドはリソースを取得できるようになるまで待機状態になります。

FltAcquireResourceShared は、通常のカーネル APC 配信を無効にする ExAcquireResourceSharedLite のラッパーです。

FltAcquireResourceShared は通常のカーネル APC 配信を無効にするため、FltAcquireResourceShared を呼び出す前に KeEnterCriticalRegion または FsRtlEnterFileSystem を呼び出す必要はありません。

取得後にリソースを解放するには、 FltReleaseResource を呼び出します。 FltAcquireResourceShared への呼び出しが成功するたびに、FltReleaseResource への後続の呼び出しと一致する必要があります。

排他アクセス用のリソースを取得するには、 FltAcquireResourceExclusive を呼び出します。

システムのリソース リストからリソースを削除するには、 ExDeleteResourceLite を呼び出します。

再利用のためにリソースを初期化するには、 ExReinitializeResourceLite を呼び出します。

ERESOURCE 構造体の詳細については、「 ERESOURCE ルーチンの概要」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP SP2
サポートされている最小のサーバー Windows Server 2003 SP1
Header fltkernel.h
Library FltMgr.lib
IRQL IRQL <= APC_LEVEL