SD 記憶卡驅動程式堆疊
安全數位(SD)卡技術始於可攜式、微型記憶卡,但隨著安全數位I/O(SDIO)規格的發行,安全數位協會(SDA)擴大了SD技術的定義,包括各種卡片功能,例如藍牙裝置、攝像機、無線 LAN 裝置,以及全球定位系統(GPS)接收器。 本文件說明作業系統如何支援 SD 技術的卡功能擴充。
許多早期 SD 儲存裝置的卡片讀取器都設計為連線到 USB 總線。 Windows 會使用 USB 大量儲存驅動程式(usbstor.sys)和原生儲存類別驅動程式(disk.sys)來管理這些裝置,如下圖所示:
如需更完整了解 Windows 為連接到 USB 總線的記憶卡所建立的裝置堆疊,請參閱 USB 大量儲存裝置的 裝置物件範例。
作系統支援直接連線到PCI總線的SD主機控制器。 當系統列舉 SD 主機控制器時,它會載入原生 SD 匯流驅動程式 (sdbus.sys)。 如果使用者插入 SD 記憶卡,Windows 會在總線驅動程式上方載入原生 SD 儲存類別驅動程式(sffdisk.sys)和記憶體迷你埠驅動程式(sffp_sd.sys)。 如果使用者插入具有不同功能類型的 SD 記憶卡,例如 GPS 或無線 LAN,Windows 會為裝置載入廠商提供的驅動程式。
SD 堆疊中的所有設備驅動器,無論是原生或廠商提供的,都必須在靜態 SD 總線連結庫中呼叫例程來與 SD 總線驅動程式通訊(sdbus.lib)。 SD 驅動程式在編譯時必須連結到此連結庫。 下圖描述系統在列舉 SD 控制器和隨附卡片時所建立的 SD 驅動程式堆疊:
SD 設備驅動器無法直接存取主機控制器緩存器集,也無法在 I/O 要求封包中內嵌主機控制器的傳遞命令。 SD 設備驅動器會呼叫 SD 總線連結庫例程向主機控制器發出命令,然後連結庫會產生主機控制器的適當 SD 命令。
SD 設備驅動器必須處理標準 PnP 和電源 IRP,但它們不會要求或管理硬體資源,例如埠、記憶體或中斷向量。 因此,處理 IRP_MN_START_DEVICE 要求時,不需要 SD 裝置驅動程式來映射任何硬體資源。 不過,當 SD 裝置驅動器收到 IRP_MN_STOP_DEVICE 要求時,它必須停止所有 I/O 作業。 此外,驅動程式必須關閉其介面至 SD 總線驅動程式,以回應 IRP_MN_QUERY_REMOVE_DEVICE 要求。
發生硬體中斷時,SD 總線連結庫會攔截中斷、遮罩進一步中斷,並透過發生硬體中斷的回呼例程通知 SD 設備驅動器。 如需總線驅動程式用來通知 SD 裝置驅動器硬體中斷的回呼例程描述,請參閱 PSDBUS_CALLBACK_ROUTINE。 如需 SD 驅動程式堆疊和連結庫如何管理硬體中斷的一般說明,請參閱 處理安全數位(SD) 硬體中斷。
ntddsd.h 頭檔是 Windows Driver Kit(WDK)中提供的檔案,其中宣告了由 SD 總線程式庫公開的例程之原型。