共用方式為


Passive-Level ISR

從Windows 8開始,核心模式驅動程式架構 (KMDF) 和使用者模式驅動程式架構 (UMDF) 驅動程式可以註冊其插斷服務常式, (ISR) 在被動層級執行。

如需 KMDF 和 UMDF 驅動程式被動層級 ISR 的詳細資訊,請參閱下列主題:

如果周邊裝置使用一般用途 I/O (GPIO) 針腳將中斷要求轉寄給處理器,Windows 中斷抽象概念可方便讓此裝置的驅動程式忽略此針腳所屬 GPIO 控制器的硬體特定詳細資料。 當核心設陷處理常式執行以回應來自裝置的 GPIO 轉寄中斷要求時,此處理程式會自動清除或遮罩 GPIO 硬體暫存器中的中斷。 此外,核心設陷處理常式會直接呼叫裝置的 ISR,或排程此 ISR 在另一個執行緒中執行。

GPIO 硬體暫存器經常會對應記憶體,在此情況下,核心設陷處理常式可以直接在 DIRQL 存取它們。 不過,周邊裝置的硬體暫存器可能不是記憶體對應,在此情況下,周邊設備磁碟機必須使用 I/O 要求來存取它們。 如果是的話,周邊設備磁碟機的 ISR 必須在 IRQL = PASSIVE_LEVEL執行,才能使用 I/O 要求來靜音中斷,或執行中斷的初始服務。 被動層級 ISR 可以同步傳送 I/O 要求,並視需要封鎖直到要求完成為止。

為了支援產生邊緣觸發中斷要求訊號的周邊裝置的被動層級 ISR,核心設陷處理常式會清除 GPIO 針腳上的擱置中斷,然後排程 ISR 在被動層級的核心執行緒中執行。

為了支援產生層級觸發中斷要求訊號的周邊裝置的被動層級 ISR,核心設陷處理常式會遮罩 GPIO 針腳上的擱置中斷,然後將 ISR 排程在被動層級的核心執行緒中執行。 ISR 負責清除周邊裝置中的中斷要求。 ISR 傳回之後,核心執行緒會取消遮罩 GPIO 針腳上的中斷。

因為中斷會保持遮罩,直到 ISR 傳回為止,裝置的被動層級 ISR 應該只執行中斷的初始服務,然後返回以避免其他裝置延遲被動層級 ISR。 一般而言,驅動程式應該延遲中斷背景工作執行緒的額外中斷相關處理,其優先順序低於 ISR。