共用方式為


GPIO 中斷

某些一般用途 I/O (GPIO) 控制器裝置可以設定其 GPIO 針腳,以作為中斷要求輸入運作。 這些中斷要求輸入是由實際連線到 GPIO 針腳的周邊裝置所驅動。 這些 GPIO 控制器的驅動程式可以啟用、停用、遮罩、解除遮罩,以及清除個別 GPIO 針腳上的中斷要求。

GPIO 中斷的支援是選擇性的。 GPIO 架構延伸模組 (GpioClx) 不需要 GPIO 控制器來支援 GPIO 中斷。

本節內容

主題 描述

主要和次要中斷

GPIO 中斷處理原本就是兩階段程式。 從一般用途 I/O (GPIO) 控制器中斷,導致 GPIO 架構延伸模組 (GpioClx) 插斷服務常式 (ISR) 執行,稱為 主要中斷。 此 ISR 會將中斷 GPIO 針腳對應至全域系統中斷 (GSI) ,並將此 GSI 傳遞給硬體抽象層 (HAL) 。 HAL 會產生 次要中斷 ,以執行第二個 ISR,以邏輯方式透過此 GSI 連接到 GPIO 針腳。 此程式會顯示在 GPIO 驅動程式支援概觀中的圖表中。

GPIO 型中斷資源

將中斷傳送至一般用途 I/O (GPIO) 針腳的周邊裝置驅動程式會取得 GPIO 中斷作為抽象 Windows 中斷資源。 核心模式驅動程式架構 (KMDF) 驅動程式會透過其 EvtDevicePrepareHardware 事件回呼函式接收這些資源。

被動層級 ISR

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

中斷相關的回呼

作為選項,適用于一般用途 I/O 的驅動程式 (GPIO) 控制器可以提供 GPIO 中斷的支援。 為了支援 GPIO 中斷,GPIO 控制器驅動程式會實作一組回呼函式來管理這些中斷。 驅動程式會在驅動程式將本身註冊為 GPIO 架構延伸模組的用戶端時,在註冊封包中包含這些回呼函式的指標, (GpioClx) 。

GPIO 控制器驅動程式的中斷同步處理

GPIO 控制器驅動程式可以呼叫 GPIO_CLX_AcquireInterruptLockGPIO_CLX_ReleaseInterruptLock 方法來取得和釋放 GPIO 架構延伸模組在內部實作的中斷鎖定, (GpioClx) 。 在 IRQL = PASSIVE_LEVEL 執行的驅動程式程式碼可以呼叫這些方法,以同步處理至 GpioClx 中的插斷服務常式 (ISR) 。 GpioClx 會針對 GPIO 控制器中的每個針腳行建立個別的中斷鎖定。

啟用和停用共用 GPIO 中斷

在某些情況下,中斷來自兩個或多個周邊裝置的要求行,可能會連線到相同的實體一般用途 I/O (GPIO) 針腳。 共用中斷線的 GPIO 針腳通常會針對層級觸發的中斷進行設定。

GPIO 插斷遮罩

一般用途 I/O (GPIO) 已設定為中斷輸入的針腳,除了啟用和停用之外,還可以遮罩和取消遮罩。