ExAcquirePushLockExclusive マクロ (wdm.h)

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

構文

void ExAcquirePushLockExclusive(
   Lock
);

パラメーター

Lock

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

戻り値

なし

解説

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

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

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

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

このルーチンを呼び出す前に、ドライバー は KeEnterCriticalRegion を呼び出すことによって、通常のカーネル APC 配信を無効にする必要があります。 KeLeaveCriticalRegion を呼び出して、プッシュ ロックが解除された後に配信を再び有効にできます。 詳細については、「 APC の無効化」を参照してください。

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

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

要件

要件
サポートされている最小のクライアント Windows 10 Version 1809
Header wdm.h

こちらもご覧ください

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockExclusive

ExAcquirePushLockShared