SPB 控制器驅動程式概觀

SPB 控制器是一種裝置,可控制 簡單的周邊總線 (SPB) ,以及從連線到 SPB 的周邊裝置之間傳輸數據。 SPB 控制器的硬體廠商會提供SPB控制器驅動程式來管理控制器中的硬體功能。

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

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

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) 的核心模式驅動程式,或是使用 使用者模式驅動程式架構 的使用者模式驅動程式 (UMDF) 。 這些驅動程式可以傳送讀取和寫入要求,以將數據傳送到SPB連線的周邊裝置。 此外,驅動程式可以傳送 I/O 控制項 (IOCTL) 要求來執行 SPB 特定作業。

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

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

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