KeAcquireInStackQueuedSpinLockAtDpcLevel 函式 (wdm.h)

當呼叫端已在 IRQL >= DISPATCH_LEVEL 上執行時,KeAcquireInStackQueuedSpinLockAtDpcLevel 例程會取得已排入佇列的微調鎖定。

語法

void KeAcquireInStackQueuedSpinLockAtDpcLevel(
  PKSPIN_LOCK         SpinLock,
  PKLOCK_QUEUE_HANDLE LockHandle
);

參數

SpinLock

[in, out]指定要取得的微調鎖定。 這個參數必須由 呼叫 KeInitializeSpinLock 例程來初始化。

LockHandle

[out]呼叫端提供的 KLOCK_QUEUE_HANDLE 結構指標,例程可用來傳回微調鎖定佇列句柄。 若要釋放鎖定,呼叫端會將此值傳遞至 KeReleaseInStackQueuedSpinLockFromDpcLevel 例程。

傳回值

備註

對於在 IRQL >= DISPATCH_LEVEL執行的驅動程式, KeAcquireInStackQueuedSpinLockAtDpcLevel 會取得微調鎖定做為 佇列微調鎖定。 如需詳細資訊,請參閱 佇列微調鎖定。 若要釋放微調鎖定,請呼叫 KeReleaseInStackQueuedSpinLockFromDpcLevel 例程。

在 IRQL = DISPATCH_LEVEL已在 IRQL >上執行的驅動程式可以呼叫此例程,以更快速地取得佇列的微調鎖定。 否則,請使用 KeAcquireInStackQueuedSpinLock 例程來取得微調鎖定。

對於在 IRQL > DISPATCH_LEVEL執行的驅動程式,此例程會取得鎖定,而不需修改目前的 IRQL。 對於在 IRQL = DISPATCH_LEVEL執行的驅動程式,此例程會藉由取得鎖定來改善效能,而不需要先將 IRQL 設定為 DISPATCH_LEVEL,在此情況下會是多餘的作業。

如同一般的微調鎖定,佇列的微調鎖定只能在非常特殊的情況下使用。 如需何時使用微調鎖定的描述,請參閱 KeAcquireSpinLock

驅動程式不得在相同的微調鎖定上結合 對 KeAcquireSpinLockKeAcquireInStackQueuedSpinLock 的呼叫。 微調鎖定必須一律取得或釋放為已排入佇列的微調鎖定,或作為一般的微調鎖定。

規格需求

需求
最低支援的用戶端 Windows XP
標頭 wdm.h
IRQL IRQL >= DISPATCH_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport)

另請參閱

KLOCK_QUEUE_HANDLE

KeAcquireSpinLock

KeAcquireInStackQueuedSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel