共用方式為


Windows 儲存體驅動程式架構

適用于周邊存放裝置的 Windows 作業系統類別和篩選驅動程式,可作為階層在類別或篩選驅動程式和系統提供的埠驅動程式之上的任何中繼或最高層級驅動程式之間的介面。

使用者應用程式或核心元件的 I/O 要求可透過 I/O 系統服務和一或多個中繼或最高層級驅動程式,例如檔案系統驅動程式,到達儲存體類別驅動程式。 儲存體類別驅動程式會使用系統定義的 SCSI 要求區塊將它們轉換成 IRP 的標準 IRP, (SRB) 包含 SCSI 命令描述元區塊, (SCSI 命令描述元區塊) ,再將每個 IRP 傳送至下一個較低驅動程式。 儲存體埠驅動程式會將來自類別驅動程式的 SRB 轉譯為匯流排特定命令,其會透過 I/O 匯流排驅動程式傳送至儲存體 HBA,而且可能是一或多個篩選驅動程式。

下圖顯示 Windows 儲存體驅動程式的分層架構。

說明 nt 型作業系統儲存體驅動程式分層架構的圖表。

從圖底部開始,下列說明每種儲存體驅動程式類型:

  1. 儲存體埠驅動程式會定義所有 Windows 儲存類別驅動程式的介面,包括系統提供的磁片、磁帶、CDROM、DVD 和變更程式類別驅動程式。 此埠/類別介面會隔離類別驅動程式,使其各自裝置所連接的主機匯流排介面卡特定需求。 儲存體埠驅動程式也會同步處理對應 HBA 上所有裝置驅動程式的匯流排存取。 系統提供 SCSI、IDE、USB 和 IEEE 1394 介面卡的存放裝置埠驅動程式。

    儲存體埠驅動程式會從下一個較高的驅動程式接收 SRB, (儲存體類別驅動程式或插播篩選驅動程式) ,並依照下列方式處理:

    • SCSI 或其他匯流排的儲存體埠驅動程式會將具有 CDB 的 SRB 傳遞至與作業系統無關的 HBA 專屬 Storport 迷你埠驅動程式 ,此驅動程式會動態連結至其對應的埠驅動程式,並提供特定 HBA 的硬體特定支援。 如需實作 SCSI 迷你埠驅動程式的相關資訊,請參閱 Storport Miniport Drivers
    • 舊版 IDE/ATAPI 或 IEEE 1394 匯流排的儲存體埠驅動程式會將從儲存體類別驅動程式收到的 SRB 轉譯為基礎配接器所需的格式,例如,根據匯流排特定的傳輸通訊協定重新封裝 CDN,或將它們轉譯成不同的格式,藉此將高階驅動程式與基礎匯流排的特性隔離。
  2. 上層或較低 儲存體篩選驅動程式 支援系統提供的儲存類別驅動程式未提供的裝置特定功能。 較低的篩選儲存體驅動程式會監視儲存體類別驅動程式所發出的 SRB 和/或 IRP,並視需要修改它們,再將其傳遞至下一個較低的驅動程式 (儲存體埠驅動程式或其他儲存體篩選驅動程式) 。

    如需實作儲存體篩選驅動程式的詳細資訊,請參閱 儲存體篩選驅動程式

  3. 儲存體類別驅動程式會使用 SCSI 埠/類別介面,在系統提供儲存體埠驅動程式的任何匯流排上控制其類型的裝置。 類別驅動程式是特定裝置類別的特定類別,例如,一個類別驅動程式可以在任何支援的匯流排上執行所有 CD-ROM 裝置;另一個可以控制所有磁片裝置。 儲存體類別驅動程式會建置包含 CDB 的使用者應用程式或驅動程式在儲存體堆疊中較高層級的 I/O 要求,並將這些 SRB 發出至下一個較低的驅動程式, (儲存體埠驅動程式或插播篩選驅動程式) ,就像裝置是 SCSI 裝置一樣。

    儲存體類別驅動程式的實作對高階驅動程式而言是透明的。 磁帶或中型變更程式裝置的類別驅動程式會實作為裝置特定的迷你類別驅動程式,連結到系統提供的類別驅動程式。 其他儲存裝置的系統提供類別驅動程式,例如磁片和 CD-ROM/DVD,會實作為單一整合式驅動程式。

    如需實作儲存體類別驅動程式的詳細資訊,請參閱 儲存體類別驅動程式。 如需實作磁帶或變更程式迷你類別驅動程式的相關資訊,請參閱 磁帶驅動程式Changer 驅動程式

  4. 上層篩選儲存體驅動程式會攔截儲存體堆疊中較高使用者應用程式和驅動程式的 IRP,然後可能會先加以修改,再將它們傳遞至下一個較低的驅動程式, (儲存體類別驅動程式或其他儲存體篩選驅動程式) 。 篩選驅動程式通常會監視基礎裝置的效能。

裝置所連結的匯流排類型,以及其儲存體埠驅動程式的實作對高階驅動程式而言是透明的。 儲存體埠驅動程式可能會根據埠/迷你埠驅動程式架構來實作,例如 SCSI 埠驅動程式;做為控制單一、標準硬體的整合式驅動程式,例如 IDE/ATAPI 埠驅動程式;或作為將 SRB 轉譯為不同驅動程式堆疊所需格式的篩選驅動程式,例如 IEEE 1394 埠驅動程式。

系統提供的 SCSI 埠驅動程式也可以做為儲存類別驅動程式與 SCSI 迷你埠驅動程式之間的介面,控制相同類型的非 SCSI 儲存裝置。 例如,驅動程式寫入器可以藉由撰寫連結至系統 SCSI 埠驅動程式的虛擬 SCSI 迷你埠驅動程式,並使用它所提供的介面,來節省相當多的設計、開發和偵錯工作。 需要這類迷你埠驅動程式,才能將傳入的 SCSI 命令轉譯為裝置特定的命令。 另一方面,系統提供的埠和類別驅動程式會代表虛擬 SCSI 迷你埠處理許多必要的工作,包括初始化期間的登錄存取、所有資源和物件配置、同步處理、預先設定要求的傳輸,以符合迷你埠裝置的功能,以及重試要求。

如需 SRB 的詳細資訊,請參閱Kernel-Mode驅動程式架構參考。 如需有關 CDB 的裝置類型特定資訊,請參閱 INCITS SCSI-3 標準中的適當命令集。