次の方法で共有


ExTryAcquirePushLockExclusive マクロ (wdm.h)

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

構文

BOOLEAN ExTryAcquirePushLockExclusive(
   Lock
);

パラメーター

Lock

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

戻り値

ロックが正常に取得された場合、戻り値は 0 以外です。 現在のスレッドがロックを取得できなかった場合、戻り値は 0 です。

注釈

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

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

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

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

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

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

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

必要条件

要件 価値
ヘッダー wdm.h (Wdm.h を含む)

こちらもご覧ください

ExTryAcquirePushLockShared する

ExInitializePushLock の

KeEnterCriticalRegion

ExReleasePushLockExclusive の

ExAcquirePushLockShared の