共用方式為


SPB 控制器驅動程式概觀

SPB 控制器是控制 簡單周邊總線(SPB)的裝置,並在 SPB 與其連線的周邊裝置之間進行數據傳輸。 SPB 控制器的硬體廠商提供SPB控制器驅動程式來管理控制器中的硬體功能。

從 Windows 8 開始,SPB 架構延伸模組 (SpbCx) 可簡化 簡單周邊總線 控制器驅動程式的開發。 SpbCx 是系統提供的 Kernel-Mode 驅動程式框架 (KMDF) 的擴充功能。 SPB 控制器裝置的硬體廠商會提供控制器驅動程式來執行所有硬體特定的驅動程式作業。 此驅動程式會與SpbCx通訊,以執行SPB控制器特有的作業,並與KMDF直接通訊以執行一般驅動程序作業。

例如,SPB 控制器驅動程式通常會呼叫 KMDF 中的 WdfDeviceInitSetPnpPowerEventCallbacks 方法來註冊以接收電源事件回呼,並呼叫 WdfInterruptCreate 方法,將驅動程式的中斷服務例程 (ISR) 連接到 SPB 控制器的中斷。 為了執行SPB特定作業,SPB 控制器會透過 SpbCx設備驅動器介面 (DDI) 與SpbCx通訊。

SpbCx 會與 SBP 控制器驅動程式合作,以處理連線到 SPB 之周邊裝置的 I/O 要求。 SpbCx 會執行SPB控制器驅動程式通用的處理工作。 這些工作包括管理SPB控制器的I/O要求佇列。 這些佇列包含來自驅動程式的 I/O 要求,這些驅動程式會管理連線到總線的周邊裝置。 SPB 控制器驅動程式會執行處理這些要求所需的所有硬體特定作業。

下圖顯示SPB控制器驅動程式和SpbCx。

spb 元件的區塊圖。

SPB 控制器驅動程式和 SpbCx 都以核心模式執行,並透過 SpbCx DDI 彼此通訊。 SPB 控制器驅動程式會呼叫 SpbCx 所實作的驅動程序支援方法。 SpbCx 會呼叫 SPB 控制器驅動程式所實作的事件回呼函式。

將 I/O 要求傳送至 SPB 控制器的驅動程式是使用 Kernel-Mode Driver Framework (KMDF) 的核心模式驅動程式,或是使用 User-Mode Driver Framework (UMDF) 的使用者模式驅動程式。 這些驅動程式可以傳送讀取和寫入要求,以在SPB連線的周邊裝置之間往返傳輸數據。 此外,驅動程式可以傳送 I/O 控制件 (IOCTL) 要求來執行 SPB 特定作業。

SPB 控制器驅動程式會直接存取 SPB 控制器裝置的硬體暫存器,以啟動與連接到 SPB 的周邊裝置的資料傳輸。 對於 I2C 之類的 SPB,這些數據傳輸會以相對緩慢的速度進行。 雖然SPB控制器的硬體緩存器可能是記憶體對應的,但周邊裝置的緩存器必須透過SPB以序列方式存取。

為了回應傳輸數據到或從以SPB連接的周邊裝置的I/O請求,SPB控制器驅動程式會啟動總線傳輸,將I/O請求標示為擱置中,並且不會等待傳輸完成就傳回。 稍後,當SPB控制器硬體完成傳輸時,控制器會發出中斷訊號,而SPB控制器驅動程式中的ISR會完成擱置的I/O要求,或在要求的I/O作業中起始下一個傳輸。

只有驅動程式可以將 I/O 要求直接傳送至 SPB 控制器。 當使用者模式應用程式將數據傳送至SPB連接的周邊裝置或從SPB連接的周邊裝置時,應用程式必須依賴SPB周邊設備驅動器,將對應的讀取或寫入要求傳送至SPB控制器。