次の方法で共有


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
ヘッダー fltkernel.h
ライブラリ FltMgr.lib
IRQL IRQL <= APC_LEVEL