KeAcquireInStackQueuedSpinLock 函式 (wdm.h)

KeAcquireInStackQueuedSpinLock 例程會取得佇列的微調鎖定。

語法

void KeAcquireInStackQueuedSpinLock(
  PKSPIN_LOCK         SpinLock,
  PKLOCK_QUEUE_HANDLE LockHandle
);

參數

SpinLock

[in, out]指定要取得的微調鎖定。 此參數必須使用 KeInitializeSpinLock 初始化。

LockHandle

[out]呼叫端提供的 KLOCK_QUEUE_HANDLE 變數指標,例程可用來傳回微調鎖定佇列句柄。 呼叫端會在釋放鎖定時,將此值傳遞至 KeReleaseInStackQueuedSpinLock 。 驅動程式在每次取得鎖定時,通常會在堆疊上配置 結構。 驅動程式不應該從多個呼叫網站使用相同的KLOCK_QUEUE_HANDLE。

傳回值

備註

KeAcquireInStackQueuedSpinLock 會取得微調 鎖定作為佇列的微調鎖定。 如需詳細資訊,請參閱 佇列微調鎖定。 呼叫端會呼叫 KeReleaseInStackQueuedSpinLock 例程來釋放微調鎖定。

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

此例程會在取得微調鎖定時,將 IRQL 層級提升為DISPATCH_LEVEL。 如果呼叫端保證已在DISPATCH_LEVEL執行,呼叫 KeAcquireInStackQueuedSpinLockAtDpcLevel 會更有效率。

發出微調鎖定的 KeReleaseInStackQueuedSpinLock 呼叫必須在 IRQL = DISPATCH_LEVEL發生。 此呼叫會還原操作系統在 KeAcquireInStackQueuedSpinLock 呼叫開始時儲存的原始 IRQL。

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

規格需求

需求
標頭 wdm.h (包含 Wdm.h)
IRQL IRQL <= DISPATCH_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) MarkingQueuedIrps (wdm) QueuedSpinLock (storport) 、QueuedSpinLock (wdm) 、QueuedSpinLockRelease (storport) QueuedSpinLockRelease (wdm)

另請參閱

KLOCK_QUEUE_HANDLE

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLock