次の方法で共有


KeAcquireSpinLockAtDpcLevel マクロ (wdm.h)

呼び出し元が IRQL >= DISPATCH_LEVELで既に実行されている場合、KeAcquireSpinLockAtDpcLevel ルーチンはスピン ロックを取得します。

構文

void KeAcquireSpinLockAtDpcLevel(
  [in, out] PKSPIN_LOCK SpinLock
);

パラメーター

[in, out] SpinLock

呼び出し元がストレージを提供する必要がある、初期化されたKSPIN_LOCKスピン ロックへのポインター。 スピン ロックは、ページ以外のプールからである必要があります。

戻り値

なし

解説

ドライバーは、DISPATCH_LEVEL以上の IRQL で既に実行されている場合にのみ、ドライバーのパフォーマンスを向上させるために、KeAcquireSpinLock ではなく KeAcquireSpinLockAtDpcLevel を呼び出します。

ドライバーが IRQL <= APC_LEVELで実行されている場合は、そのルーチンによって IRQL が発生するように KeAcquireSpinLock を呼び出す必要があります。 KeAcquireSpinLockAtDpcLevel は、呼び出し元が IRQL >= DISPATCH_LEVELで既に実行されていることを前提としているため、発生させる必要はありません。

呼び出し元は、 KeReleaseSpinLockFromDpcLevel を使用してスピン ロックをできるだけ早く解放する必要があります。

ロックの詳細については、「スピンロック」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 「解説」を参照してください。
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport)IrqlDispatch(storport)SpinLockSafe(storport)

こちらもご覧ください

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel