次の方法で共有


KeAcquireSpinLockAtDpcLevel マクロ (wdm.h)

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

構文

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 を使用してスピン ロックを解放する必要があります。

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

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 「解説」セクションを参照してください。
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport)IrqlDispatch(storport)SpinLockSafe(storport)

関連項目

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel