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

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

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

  2. 类驱动程序使用 (设置了 SRB_FLAGS_BYPASS_LOCKED_QUEUE 标志的 IRP_MJ_SCSI 请求更改电源状态) 。

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

解锁其队列后,SCSI 端口将恢复处理排队的 SMB。 类驱动程序不应尝试绕过由另一个驱动程序锁定的队列。

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