共用方式為


SCSI 埠所提供的功能

SCSI 埠驅動程式提供下列功能:

  • Microsoft Windows 支援包含不同類型的 I/O 匯流排和/或相同類型的數個 I/O 匯流排的系統。 需要一個常見的定址配置,才能處理此種類。

  • PCI 裝置可以同時有 I/O 埠和記憶體暫存器資源。 邏輯位址有助於讓埠驅動程式透明地區分。

  • 某些系統包含連線到多個匯流排的 HBA;這類 HBA 可能需要陣列位址轉譯。

  • 需要邏輯位址,才能跨 CISC 型和 RISC 型機器進行移植性。

  • 當裝置太忙碌而無法處理它們時重試 IRP。

    當裝置太忙碌而無法處理它們時,儲存體類別驅動程式不需要實作演算法來重試 IRP。 SCSI 埠驅動程式會實作這項功能。

  • 強制執行要求的逾時值。

    類別驅動程式會設定要求的逾時值,而 SCSI 埠負責強制執行它。 不過,SCSI 埠驅動程式可以彈性地強制執行類別驅動程式的逾時值,並將匯流排的狀態納入考慮。 例如,如果 SCSI 埠所管理的光纖通道連結會卸載 20 秒,SCSI 埠可能會在停機期間暫停逾時計數器,因此,例如,在連結回復後 10 秒後,要求逾時 10 秒才會失敗。 SCSI 埠會增加指派給要求的逾時值,以回應 I/O 流量增加,因為使用較重的 I/O 流量,裝置需要更多時間才能完成要求。

  • 處理目標和控制器忙碌錯誤,以及傳輸錯誤狀況 (換句話說,與匯流排上實際傳輸資料相關的錯誤) 。 例如:

    • 匯流排同位錯誤
    • 選取逾時
  • 提供類別驅動程式與主機配接器限制的相關資訊。

    類別驅動程式負責規範資料傳輸的大小,以符合主機匯流排介面卡的限制, (HBA) 。 不過,SCSI 埠會提供類別驅動程式,其中包含完成這項工作所需的資訊。 SCSI 埠會在介面卡描述元 (STORAGE_ADAPTER_DESCRIPTOR) 中提供這項資訊,以回應 IOCTL_STORAGE_QUERY_PROPERTY IOCTL 要求。 類別驅動程式負責根據此描述元中報告的資訊,將要求分成適當大小的區塊。

  • 將匯流排相對位址轉譯為邏輯位址。

    查詢時,配接器會提供 I/O 埠的匯流排相對位址、命令暫存器,以及控制狀態暫存器。 不過,迷你埠驅動程式無法使用匯流排相對位址與其主機匯流排介面卡通訊 (HBA) 。 SCSI 埠會將匯流排相對位址轉譯為邏輯位址,讓迷你埠驅動程式能夠以透明的方式存取匯流排位址。 原因包括:

  • 確保裝置及其所有基礎裝置在啟動裝置之前,在 D0 裝置電源狀態) 上啟動電源 (。

    當裝置尚未準備好啟動電源時,SCSI 埠會排入該裝置的 D0 要求,直到裝置就緒為止。

  • 佇列類別驅動程式的非同步要求,並將其同步轉送至目標裝置。

    類別驅動程式不需要等待要求完成,再傳送下一個要求。 SCSI 埠負責排入這些要求佇列,以避免對基礎硬體的處理能力造成壓力。

  • 支援內部 I/O 要求佇列的內部和外部管理。

    大部分的佇列管理作業都是由 SCSI 埠本身起始。 例如,SCSI 埠會在發生錯誤時凍結其佇列,並將錯誤狀況回報給類別驅動程式,讓類別驅動程式可以在處理進一步的要求之前回應。 不過,SCSI 埠也會回應類別驅動程式或其他較高層級驅動程式的要求,以鎖定、解除鎖定、凍結或解除凍結其內部要求佇列。 較高層級的驅動程式可以使用SRB_FUNCTION_RELEASE_QUEUE要求,強制 SCSI 埠解除凍結其內部佇列。 如需「凍結」、「鎖定」或「解除鎖定」佇列的意義說明,請參閱 SCSI 埠驅動程式的佇列管理

  • 將裝置回報的錯誤轉譯為 SCSI-2 感知資料格式,以供類別驅動程式處理。

SCSI 埠透過 SCSI 埠程式庫常式,為迷你埠驅動程式提供服務。 迷你埠驅動程式寫入器可以呼叫這些常式,而不是將它們所提供的功能編碼成單一整合埠驅動程式。 使用這些常式所提供的一些最重要的服務如下:

  • SCSI 埠迷你埠驅動程式可以將許多 OS 相依初始化作業委派給 SCSI 埠的 ScsiPortInitialize 程式庫常式。 這可讓 SCSI 埠迷你埠驅動程式更容易跨不同版本的作業系統移植。 如需 SCSI 埠迷你埠驅動程式初始化職責的說明,請參閱 SCSI Miniport 驅動程式的 DriverEntry 常式

  • 非 PnP 裝置的 SCSI 埠迷你埠驅動程式會備援尋找介面卡的工作,並將其資源回報給 PnP 管理員。 這是在 ScsiPortInitialize中完成的。

  • SCSI 埠迷你埠驅動程式不會初始化驅動程式物件中的分派進入點。 當迷你埠驅動程式呼叫 ScsiPortInitialize時,SCSI 埠驅動程式會代表迷你埠驅動程式執行此動作。

  • SCSI 埠迷你埠驅動程式不會使用 HalTranslateBusAddress將匯流排相對位址轉換成邏輯位址。 SCSI 埠迷你埠驅動程式會透過呼叫 ScsiPortGetDeviceBase來執行此動作。

如需 SCSI 埠提供給 SCSI 埠迷你埠驅動程式的程式庫常式摘要,請參閱 SCSI 埠驅動程式支援常式