Share via


FltAcquirePushLockSharedEx 関数 (fltkernel.h)

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

構文

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

パラメーター

PushLock

不透明なプッシュ ロック ポインター。 このポインターは、 FltInitializePushLock の以前の呼び出しによって初期化されている必要があります。

Flags

ロックの属性を制御するフラグのビットマスク。

戻り値

[なし] :

解説

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

プッシュ ロックは、共有または排他アクセスのために取得できる点で、ERESOURCE 構造体 (リソースとも呼ばれます) に似ています。 プッシュ ロックの詳細については、 FltInitializePushLock の参照エントリを参照してください。

ERESOURCE 構造体とは異なり、プッシュ ロックを再帰的に取得することはできません。 呼び出し元が排他アクセスのプッシュ ロックを既に取得している場合、システムはハングします。 呼び出し元が既に共有アクセスのプッシュ ロックを取得している場合は、再び共有アクセスを受信できます。 ただし、 FltAcquirePushLockShared の各呼び出しは、 FltReleasePushLock の後続の呼び出しと一致する必要があります。

呼び出し元に、指定されたプッシュ ロックへの共有アクセス権が付与されるタイミングは、次によって異なります。

  • プッシュ ロックが現在未所有の場合、共有アクセスは現在のスレッドにすぐに付与されます。

  • 別のスレッドによる共有アクセスに対してプッシュ ロックが既に取得されていて、プッシュ ロックへの排他アクセスを待機しているスレッドがない場合、共有アクセスはすぐに呼び出し元に付与されます。 排他ウェイターがある場合、呼び出し元は待機状態になります。

  • 別のスレッドによる排他アクセスのためにプッシュ ロックが既に取得されている場合、または排他アクセスを待機している別のスレッドがある場合、現在のスレッドは、プッシュ ロックを取得できるようになるまで待機状態になります。

要件

要件
Header fltkernel.h
Library FltMgr.lib

こちらもご覧ください

FltInitializePushLock