Storport 的可以与存储类驱动程序交互的 SRB 接口
存储类驱动程序和其他更高级别的组件通过生成 SCSI 请求块 (SDB) 来与 Storport 驱动程序通信。 SRB 包含一个 SCSI 命令描述符块 (CDB) ,以及一个指向数据缓冲区的指针,这些数据缓冲区用于向设备 (传输数据(如果有任何) )。 它可能包含一个指向感知缓冲区的指针,该缓冲区用于在 SCSI 命令失败并出现 Check Condition 状态时保存 SCSI 感知数据。 有关 SRB 的详细信息,请参阅 SCSI_REQUEST_BLOCK。 存储类驱动程序将他们创建的 SDB 传递到 IRP 中的 Storport, 其中 MajorFunction 成员设置为 IRP_MJ_SCSI。 有关存储类驱动程序在将 SRB 传递给端口驱动程序之前生成 SRB 必须执行的步骤的说明,请参阅 存储类驱动程序的 BuildRequest 例程。
在向下转发 SRB 之前,Storport 在 SRB 中设置某些值,例如路径、目标编号和目标设备的逻辑单元号。
与其他端口驱动程序(例如 IDE/ATAPI 和 IEEE 1394 总线的系统提供的端口驱动程序)不同,Storport 不必将命令描述符块 (CDB) 转换为它收到的 SDB 中的不同格式,然后再将其转发到基础适配器。 Storport 只需将一些特定于目标的信息添加到 SRB,并将其传递到 CDB 未更改的微型端口驱动程序。 因此,Storport 只需在堆栈中传递包含 CDB 的 SDB。
因此,存储类和存储微型端口驱动程序的常规文档及其随附参考资料中介绍了存储类驱动程序和 Storport 之间的 SRB 接口的大多数方面。 有关与存储类驱动程序和 Storport 微型端口驱动程序对之间的 SRB 接口相关的部分列表,请参阅 Storport 的接口与 Storport 微型端口驱动程序。