共用方式為


KeAcquireInStackQueuedSpinLockAtDpcLevel 函式 (wdm.h)

KeAcquireInStackQueuedSpinLockAtDpcLevel 例程會在呼叫者已在 IRQL >= DISPATCH_LEVEL 執行時取得佇列微調鎖定。

語法

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上執行的驅動程式可以呼叫此例程,以更快取得佇列的微調鎖定。 否則,請使用 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