将存储请求排队

尽管存储类驱动程序可能为 IRP 设置内部队列,但很少需要这样做,并且也可能会降低驱动程序的性能,因为存储端口驱动程序已经为 IRP 维护驱动程序创建的特定于 LU 的设备队列。 无论特定 HBA 是否支持多个未完成的命令 (例如,SCSI 标记的队列) ,存储类驱动程序都可以在每个 IRP 传入时将每个请求发送到其设备,并依靠系统提供的端口驱动程序或 HBA 快速处理排队的请求。

发生某些 SCSI 错误时,系统端口驱动程序会冻结相应的特定于 LU 的队列,并通知类驱动程序。 有关处理错误和释放冻结请求队列的详细信息,请参阅以下内容:

存储类驱动程序的 ReleaseQueue 例程

存储类驱动程序的 InterpretRequestSense 例程

存储类驱动程序的 RetryRequest 例程

如果 HBA 支持命令队列(如返回的STORAGE_ADAPTER_DESCRIPTOR数据所示),则类驱动程序将设置SRB_FLAGS_QUEUE_ENABLE并使用它创建的 SRB 的 QueueAction 成员来控制其请求的排队方式。