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