KeAcquireInterruptSpinLock 函式 (wdm.h)

KeAcquireInterruptSpinLock 例程會取得與中斷對象相關聯的微調鎖定。

語法

KIRQL KeAcquireInterruptSpinLock(
  PKINTERRUPT Interrupt
);

參數

Interrupt

[in, out]指定中斷物件的指標。 此值必須由 IoConnectInterruptIoConnectInterruptEx提供。

傳回值

KeAcquireInterruptSpinLock 會在呼叫例程時傳回目前的 IRQL。 當微調鎖定釋放時,這個值會傳遞至 KeReleaseInterruptSpinLock

備註

驅動程式會使用中斷微調鎖定來同步存取與中斷ISR共用的記憶體。 驅動程式可以藉由呼叫 KeReleaseInterruptSpinLock來釋放微調鎖定。

在中斷微調鎖定保留時執行的任何程序代碼,在 IRQL = DIRQL 上執行指定的 插斷,因此必須非常快速地執行。 如需詳細資訊,請參閱 使用重要區段

將驅動程式例程同步處理至ISR的慣用方式是使用 KeSynchronizeExecution 例程。

從 Windows 8 開始,驅動程式可以使用IoConnectInterruptEx來註冊在 IRQL = PASSIVE_LEVEL執行的中斷服務例程,而且不會使用微調鎖定進行中斷同步處理。 如果 Interrupt 指向連接到被動層級 ISR 的中斷物件, KeAcquireInterruptSpinLock 會導致錯誤檢查。 如需詳細資訊,請參閱 使用 Passive-Level 插斷服務例程

呼叫端必須在 IRQL <= DIRQL 上執行,才能 中斷。 (這是建立中斷時傳遞為 IoConnectInterruptSynchronizeIrql 參數的驅動程式值。)

規格需求

需求
最低支援的用戶端 Windows XP
標頭 wdm.h
IRQL <= DIRQL
DDI 合規性規則 HwStorPortProhibitedDIS (storport)

另請參閱

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution