Storport 的 SRB 接口与存储类驱动程序

存储类驱动程序和其他更高级别的组件通过生成 SCSI 请求块(SRB)与 Storport 驱动程序通信。 SRB 包含 SCSI 命令描述符块(CDB)和指向数据缓冲区的指针,用于将数据传入或传出设备(如果有)。 它可能包含指向感知缓冲区的指针,该缓冲区用于在 SCSI 命令失败且状态为“检查条件”的情况下保存 SCSI 感知数据。 有关 SRB 的详细信息,请参阅 SCSI_REQUEST_BLOCK。 存储类驱动程序将它们创建的 SRBs 通过 IRP 传递给 Storport,其中 MajorFunction 成员设置为 IRP_MJ_SCSI。 有关存储类驱动程序在将 SRB 传递给端口驱动程序之前必须执行的步骤的说明,请参阅 存储类驱动程序的 BuildRequest 例程

在将 SRB 转发到堆栈之前,Storport 在 SRB 中设置某些值,例如路径、目标编号和目标设备的逻辑单元号。

与其他端口驱动程序(例如 IDE/ATAPI 和 IEEE 1394 总线的系统提供的端口驱动程序)不同,Storport 不必将它收到的命令描述符块(CDB)转换为不同的格式,然后再将其转发到基础适配器。 Storport 只需将一些特定于目标的信息添加到 SRB,并保持 CDB 不变,将其传递给微型端口驱动程序。 因此,Storport 只需将包含 CDB 的 SRB 传递到堆栈中。

因此,存储类驱动程序和 Storport 之间的 SRB 接口的大部分方面都包含在存储类和存储微型端口驱动程序及其随附参考资料的一般文档中。 有关与存储类驱动程序与 Storport-miniport 驱动程序对之间的 SRB 接口相关的部分的列表,请参阅 Storport 的接口与 Storport 微型端口驱动程序