次の方法で共有


FltAcquirePushLockExclusive 関数 (fltkernel.h)

FltAcquirePushLockExclusive マクロは、呼び出し元スレッドによる排他アクセスのために、指定されたプッシュ ロックを取得します。

構文

VOID FLTAPI FltAcquirePushLockExclusive(
  [in, out] PEX_PUSH_LOCK PushLock
);

パラメーター

[in, out] PushLock

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

戻り値

[なし] :

解説

FltAcquirePushLockExclusive は、呼び出し元スレッドによる排他アクセスのために、指定されたプッシュ ロックを取得します。

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

ERESOURCE 構造体とは異なり、プッシュ ロックを再帰的に取得することはできません。 呼び出し元が排他アクセスまたは共有アクセスのプッシュ ロックを既に取得している場合、スレッドはハングします。

呼び出し元に特定のプッシュ ロックへの排他アクセス権が付与されるタイミングは、次に依存します。

  • プッシュ ロックが現在所有されていない場合は、現在のスレッドへの排他アクセスが直ちに付与されます。

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

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

プッシュ ロックを取得した後で解放するには、 FltReleasePushLock を呼び出します。 FltAcquirePushLockExclusive に対するすべての呼び出しは、FltReleasePushLock の後続の呼び出しと一致する必要があります。

共有アクセスのプッシュ ロックを取得するには、 FltAcquirePushLockShared を呼び出します。

プッシュ ロックを初期化するには、 FltInitializePushLock を呼び出します。

プッシュ ロックを削除するには、 FltDeletePushLock を呼び出します。

要件

要件
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
IRQL <= APC_LEVEL

こちらもご覧ください

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion