处理对存储外设的请求

对于需要存储端口驱动程序通过基础总线执行请求的所有请求,类驱动程序必须使用 SCSI 请求块设置 IRP, (SRB) 包含 SCSI 命令描述符块 (CDB) 。 因此,大多数存储类驱动程序都有一个或多个内部 BuildRequest 例程来生成 SRB。 有关此类例程的详细信息,请参阅 存储类驱动程序的 BuildRequest 例程

存储类驱动程序还会将IRP_MJ_SCSI请求传递给基础存储端口驱动程序。 此类请求可能源自 存储筛选器驱动程序

对于处理 SCSI Pass-Through请求中所述的IOCTL_SCSI_PASS_THROUGH请求,类驱动程序负责将 MinorFunction 代码设置为在端口驱动程序的 I/O 堆栈位置IRP_MJ_DEVICE_CONTROL,然后再使用 IoCallDriver 将IRP_MJ_DEVICE_CONTROL请求传递给端口驱动程序。

每个存储类驱动程序负责拆分超出基础 HBA 功能的 (IRP_MJ_READ和/或IRP_MJ_WRITE) 的传输请求。 因此,大多数类驱动程序还会调用内部 SplitTransferRequest 例程( 如存储类驱动程序的 SplitTransferRequest 例程中所述),或者在读取和写入请求的调度例程中实现相同的功能。

有关处理对存储外围设备的请求的其他信息,请参阅以下主题:

处理 SCSI 传递请求

处理对存储外设的 PnP 请求

处理对存储外设的电源请求

将存储请求排队