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。
驅動程式不得在相同的微調鎖定上結合 對 KeAcquireSpinLock 和 KeAcquireInStackQueuedSpinLock 的呼叫。 微調鎖定必須一律取得或釋放為已排入佇列的微調鎖定,或作為一般的微調鎖定。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP |
標頭 | wdm.h |
IRQL | IRQL >= DISPATCH_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS (storport) |