共用方式為


GpioClx I/O 和插斷介面

一般而言,GPIO 控制器的用戶端是連接到 GPIO 針腳的周邊裝置驅動程式。 這些驅動程式會使用 GPIO 針腳作為低頻寬資料通道、裝置選取輸出,以及中斷要求輸入。 周邊設備磁碟機會開啟設定為資料輸入或輸出之 GPIO 針腳的邏輯連線。 他們會使用這些連線將 I/O 要求傳送至這些針腳。 此外,周邊設備磁碟機可以邏輯方式將其插斷服務常式連接到設定為插斷要求輸入的 GPIO 針腳。

GPIO 針腳是系統管理的硬體資源。 在周邊設備磁碟機啟動其裝置之前,隨插即用 (PnP) 管理員會將硬體資源清單指派給此驅動程式。 此硬體資源清單可能包含下列各項:

  • GPIO I/O 資源。 此資源是一組一或多個 GPIO 針腳,設定為資料輸入或資料輸出。 GPIO I/O 資源是新的 Windows 資源類型,從 Windows 8 開始。
  • 中斷。 此中斷資源可能會實作為設定為插斷輸入的 GPIO 針腳,但可由可程式化插斷控制器或處理器套件上的專用中斷針腳實作。 硬體抽象層 (HAL) 中斷抽象概念會隱藏這些實作詳細資料,用戶端驅動程式可以安全地忽略這些實作詳細資料。

在周邊設備磁碟機可以使用一組 GPIO 針腳做為資料輸入或輸出之前,驅動程式必須開啟這些針腳的邏輯連線。 例如, 核心模式驅動程式介面 (KMDF) 驅動程式會取得 WDFIOTARGET 控制碼來識別連線。 驅動程式會使用此控制碼將 I/O 要求傳送至針腳。 具體而言,用戶端驅動程式會傳送 IOCTL_GPIO_WRITE_PINSIOCTL_GPIO_READ_PINS I/O 控制要求,以將資料寫入輸出針腳,並從輸入針腳讀取資料。 如需示範如何連線到一組 GPIO I/O 針腳的程式碼範例,請參閱下列主題:

將 KMDF 驅動程式連線到 GPIO I/O 針腳

若要使用中斷資源來接收中斷,周邊設備磁碟機必須以邏輯方式將插斷服務常式連接到中斷 (ISR) 中斷。 例如,核心模式驅動程式可以藉由呼叫 WdfInterruptCreate 方法或 IoConnectInterruptEx 常式來建立此連線。 連接之後,當周邊裝置發出對 GPIO 針腳或中斷控制器輸入的中斷要求時,驅動程式的 ISR 就會執行。 如需中斷的詳細資訊,請參閱 建立插斷物件

GPIO 架構延伸模組 (GpioClx) 會管理其用戶端周邊設備磁碟機的 I/O 連線和中斷連線。 PnP 管理員可能會將 GPIO 控制器裝置上的不同 GPIO 針腳群組指派給不同的用戶端驅動程式。 其中有些針腳會設定為資料輸入或輸出,有些則設定為中斷要求輸入。

當用戶端驅動程式收到中斷要求或將 I/O 要求傳送至 GPIO 針腳時,GpioClx 會呼叫 GPIO 控制器驅動程式所實作的事件回呼函式。 這些回呼會存取 GPIO 控制器裝置中的硬體暫存器。 透過這些函式呼叫,GpioClx 會讀取資料輸入、寫入資料輸出,以及藉由查詢、啟用、遮罩、清除等方式查詢、啟用、遮罩、清除等 GPIO 針腳,以讀取資料輸入、寫入資料輸出,以及管理中斷 (要求) 。

GpioClx 會執行管理 I/O 及中斷用戶端所開啟之連線所需的所有處理。 GPIO 控制器驅動程式—藉由委派這些連線至 GpioClx 的管理,只會負責存取 GPIO 控制器裝置中硬體暫存器相對簡單的工作。 GPIO 控制器驅動程式不需要知道進行特定存取的用戶端驅動程式。