在 Windows 上,周邊儲存設備具有類別和篩選驅動程式。 這些驅動程式會作為配置於其上的任何中間或最高層級驅動程式與系統提供的埠驅動程式之間的介面。
使用者應用程式或核心元件的 I/O 要求會透過 I/O 系統服務和一或多個中繼或最高層級驅動程式,例如檔案系統驅動程式,到達儲存類別驅動程式。 儲存類別驅動程式會先將標準 IRP 轉譯成具有系統定義的 儲存要求塊(SRB)的 IRP,再將每個 IRP 傳送至下一個較低的驅動程式。 記憶體埠驅動程式會將來自類別驅動程式的 SRB 轉譯為總線特定命令,它會透過 I/O 總線驅動程式傳送至記憶體主機總線適配卡(HBA),而且可能還有一或多個篩選驅動程式。
下圖顯示 Windows 記憶體驅動程式的分層架構。
從圖底部開始:
儲存埠驅動程式 定義所有 Windows 儲存類別驅動程式的介面,包括系統提供的驅動程式,例如磁碟、磁帶和 DVD。 此埠/類別介面會將類別驅動程式與其各自裝置連接的 HBA 特定適配卡需求隔離。 記憶體埠驅動程式也會同步處理對應 HBA 上所有裝置驅動程式的總線存取。 系統提供 SCSI、IDE、USB 和 IEEE 1394 適配卡的儲存埠驅動程式。
儲存體埠驅動程式會從更高順位的驅動程式(儲存類別驅動程式或介入的篩選驅動程式)接收SRB,並處理它們,如下所示:
- 儲存器埠驅動程式會將具有 CDB 的 SRB 傳遞給作業系統獨立、HBA 特定的 Storport 迷你連接埠驅動程式。 此迷你埠驅動程式會動態連結至其對應的埠驅動程式,並提供特定 HBA 的硬體特定支援。 如需實作迷你埠驅動程序的詳細資訊,請參閱 Storport Miniport Drivers。
- 舊版 IDE/ATAPI 或 IEEE 1394 總線的儲存埠驅動程式會將從記憶體類別驅動程式收到的 SRB 轉譯為基礎配接器所需的格式。 例如,它可能會根據總線特定的傳輸協議重新封裝 CDB。 或者,它可能會將它們轉化為不同的格式,使上層驅動程式與基礎總線的特點隔離。
上層或下層 儲存篩選驅動程式 支援系統提供的儲存類別驅動程式未提供的裝置特定功能。 較低的過濾儲存驅動程式會監視儲存類別驅動程式所發出的 SRB 和/或 IRP。 它會視需要修改它們,再將它們傳遞至下一個較低的驅動程式,它可以是記憶體埠驅動程式或其他記憶體篩選驅動程式。
如需實作記憶體篩選驅動程式的詳細資訊,請參閱 儲存器篩選驅動程式。
儲存類別驅動程式 會使用 SCSI 連接埠/類別介面,在系統提供儲存埠驅動程式的任何總線上控制其類型的裝置。 類別驅動程式專屬於特定類別的 device-例如,一個類別驅動程式可以在任何支援的總線上執行所有 CD-ROM 裝置;另一個可以控制所有磁碟裝置。 記憶體類別驅動程式會處理來自記憶體堆疊中較高使用者應用程式或驅動程式的 I/O 要求。 其方式是建置包含CDB的SRB,並將這些SRB發行至下一個較低的驅動程式(儲存埠驅動程式或介入篩選驅動程式),就像裝置是SCSI裝置一樣。
記憶體類別驅動程式的實作對上層驅動程式而言是透明的。 磁帶或媒體變更器裝置的類別驅動程式會實作為一個連結到系統提供的類別驅動程式的裝置特定迷你類別驅動程式。 其他存儲設備的系統提供類別驅動程式,例如磁碟和CD-ROM/DVD,會實作為單一整合型驅動程式。
如需實作記憶體類別驅動程式的詳細資訊,請參閱 記憶體類別驅動程式。 如需實作磁帶或變更器迷你類別驅動程式的相關信息,請參閱 磁帶驅動程式 和 Changer Drivers。
上層篩選存儲驅動程式會攔截來自儲存堆疊中更高層的使用者應用程式和驅動程式的 I/O 請求封包(IRP)。 然後,它可能會修改它們,再將它們傳遞至下一個較低的驅動程式(儲存類別驅動程式或其他記憶體篩選驅動程式)。 篩選驅動程式通常會監視基礎裝置的效能。
裝置所連結的總線類型,且其儲存埠驅動程序的實作對上層驅動程式而言是透明的。
可能實作記憶體埠驅動程式:
- 根據埠/迷你埠驅動程式架構,例如 Storport 或 SCSI 埠驅動程式。
- 作為控制單一標準硬體的單體驅動程式,例如IDE/ATAPI埠驅動程式。
- 作為將 SRB 轉譯為不同驅動程式堆疊所需格式的篩選驅動程式,例如 IEEE 1394 埠驅動程式。
系統提供的 SCSI 埠驅動程式也可以作為儲存類別驅動程式與 SCSI 迷你埠驅動程式之間的介面,控制相同類型的非 SCSI 儲存裝置。 例如,驅動程式撰寫者可以不再為新的磁碟陣列控制器撰寫驅動程式,而是撰寫一個連結到系統 SCSI 埠驅動程式的虛擬 SCSI 迷你埠驅動程式,並使用其提供的介面,從而節省大量精力。 需要這類迷你埠驅動程式,才能將傳入的 SCSI 命令轉譯成裝置特定的命令。 另一方面,系統提供的埠和類別驅動程式會代表虛擬 SCSI 迷你埠處理大部分必要工作。 這項工作包括初始化期間的登錄存取、所有資源和物件配置、同步處理、預先設定要求的傳輸,以符合迷你埠裝置的功能,以及重試要求。