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 |