未同步處理的 HwStorBuildIo 常式
在 SCSI 埠迷你埠驅動程式 I/O 模型中,迷你埠驅動程式的 StartIo 常式 HwScsiStartIo應該儘快將 SCSI 要求區塊 (SRB) 傳輸至硬體。 這是不可或缺的,因為在迷你埠驅動程式 的 StartIo 常式中完成的工作會在中斷停用且 IRQL = DISPATCH_LEVEL時完成。 不幸的是,此模型不適合某些高效能主機匯流排介面卡的驅動程式, (HBA) ,因為啟動 I/O 時,這些 HBA 的迷你埠驅動程式必須執行大量處理。 如果迷你埠驅動程式在其 StartIo 常式中執行這項處理,則會降低系統效能。
Storport I/O 模型支援 HwStorBuildIo 常式,以移除迷你埠驅動程式 StartIo 常式 HwStorStartIo的一些處理負擔。 在 Storport I/O 模型中,系統會在呼叫迷你埠驅動程式的HwStorStartIo常式之前呼叫HwStorBuildIo,並在該處盡可能多處理。 此策略可避免 CPU 週期爭用,以及存取重要系統結構,例如裝置擴充功能,因為 HwStorBuildIo 會在較低的 IRQL 上執行,而且不會保留同步處理鎖定。
HwStorBuildIo常式應該將 SRB 轉譯為更方便的資料結構、建置散佈/收集清單,以及執行其他個別 SRB 處理。 因為 HwStorBuildIo 常式執行期間不會保留任何鎖定,所以迷你埠驅動程式應該不會存取 SRB 和 SRB 擴充功能中以外的任何資料。 如果在處理過程中需要存取其他結構,該部分仍應該在 HwStartIo 常式中執行。
若要達到最大效能, HwStorBuildIo 常式應該與全雙工模式搭配使用。