呼び出し元のスレッドによる共有アクセスの指定されたプッシュ ロックを取得します。
構文
void ExAcquirePushLockShared(
Lock
);
パラメーター
Lock
不透明なプッシュ ロック ポインター。 このポインターは、ExInitializePushLockをする以前の呼び出しによって初期化されている必要があります。
戻り値
何一つ
備考
プッシュ ロックは、共有または排他アクセスのために取得できる点で、ERESOURCE 構造体 (リソースとも呼ばれます) に似ています。 プッシュ ロックの詳細については、ExInitializePushLockのリファレンス エントリを参照してください。
ERESOURCE 構造体とは異なり、プッシュ ロックを再帰的に取得することはできません。 呼び出し元が排他アクセスのプッシュ ロックを既に取得している場合、システムはハングします。 呼び出し元が既に共有アクセスのプッシュ ロックを取得している場合は、再び共有アクセスを受信できます。
取得後にプッシュ ロックを解放するには、ExReleasePushLockShared呼び出します。 ExAcquirePushLockShared を する各呼び出しは、ExReleasePushLockSharedへの後続の呼び出しと一致する必要があります。
呼び出し元に、指定されたプッシュ ロックへの共有アクセス権が付与されるタイミングは、次に依存します。
プッシュ ロックが現在所有されていない場合は、現在のスレッドに対してすぐに共有アクセスが許可されます。
別のスレッドによる共有アクセスに対してプッシュ ロックが既に取得されており、プッシュ ロックへの排他アクセスを待機しているスレッドがない場合、共有アクセスは呼び出し元にすぐに付与されます。 排他的待機者がある場合、呼び出し元は待機状態になります。
別のスレッドによる排他アクセスのためにプッシュ ロックが既に取得されている場合、または排他アクセスを待機している別のスレッドがある場合、現在のスレッドはプッシュ ロックを取得できるようになるまで待機状態になります。
このルーチンを呼び出す前に、ドライバーは、KeEnterCriticalRegionを呼び出すことによって、通常のカーネル APC 配信を無効にする必要があります。 KeLeaveCriticalRegion呼び出して、プッシュ ロックが解除された後に配信を再び有効にできます。 詳細については、「APCsの無効化」を参照してください。
排他アクセスのプッシュ ロックを取得するには、ExAcquirePushLockExclusive呼び出します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 バージョン 1809 |
ヘッダー | wdm.h |
関連項目
ExInitializePushLockの
ExReleasePushLockSharedをする
ExAcquirePushLockExclusiveの