次の方法で共有


ExAcquirePushLockShared マクロ (wdm.h)

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

構文

void ExAcquirePushLockShared(
   Lock
);

パラメーター

Lock

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

戻り値

何一つ

備考

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

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

取得後にプッシュ ロックを解放するには、ExReleasePushLockShared呼び出します。 ExAcquirePushLockShared する各呼び出しは、ExReleasePushLockSharedへの後続の呼び出しと一致する必要があります。

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

  • プッシュ ロックが現在所有されていない場合は、現在のスレッドに対してすぐに共有アクセスが許可されます。

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

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

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1809
ヘッダー wdm.h

関連項目

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockSharedする

ExAcquirePushLockExclusive