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。
驅動程式不得在相同的微調鎖定上結合對 KeAcquireSpinLock 和 KeAcquireInStackQueuedSpinLock 的呼叫。 微調鎖定一律必須取得或釋出為佇列的微調鎖定,或一般微調鎖定。
規格需求
需求 | 值 |
---|---|
標頭 | wdm.h (包含 Wdm.h) |
IRQL | IRQL <= DISPATCH_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDDIs (storport) 、MarkingQueuedIrps (wdm) 、QueuedSpinLock (storport) 、QueuedSpinLock (wdm) 、QueuedSpinLockRelease (storport) 、QueuedSpinLockRelease (wdm) |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應