锁定 SCSI 端口驱动程序的内部队列

类驱动程序和其他更高级别的驱动程序可以强制 SCSI 端口停止处理其队列中的请求。 类驱动程序通过向 SCSI 端口发送类型为 SRB_FUNCTION_LOCK_QUEUE 的 SRB 来停止该队列。 类驱动程序通常会停止处理 SCSI 端口队列中的请求,以更改设备的电源状态。 更改设备的电源状态后,类驱动程序将解锁队列。 顺序如下:

  1. 类驱动程序使用 SRB 函数值为 SRB_FUNCTION_LOCK_QUEUE) 的 IRP_MJ_SCSI 锁定 SCSI 端口的队列 (。

  2. 类驱动程序使用设置SRB_FLAGS_BYPASS_LOCKED_QUEUE标志的 IRP_MJ_SCSI 请求更改电源状态 (,以确保电源 IRP 不会) 排队。

  3. 类驱动程序使用 SRB 函数值为 SRB_FUNCTION_UNLOCK_QUEUE 和 SRB_FLAGS_BYPASS_LOCKED_QUEUE 标志集) 解锁 SCSI 端口的队列 (IRP_MJ_SCSI。

解锁队列后,SCSI 端口将继续处理排队的 SDB。 类驱动程序不应尝试绕过被另一个驱动程序锁定的队列。

有关从类驱动程序的角度解锁队列的详细信息,请参阅 存储类驱动程序的 ReleaseQueue 例程