IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE IOCTL (ehstorioctl.h)

IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE 请求由接收器驱动程序和应用程序发送,以更改存储设备队列的状态。 当设备暂时未经授权时,将保留存储设备队列中的 IO 请求。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

Irp->AssociatedIrp.SystemBuffer 处的输入缓冲区包含 ACT_QUEUE_STATE 结构。 ACT_QUEUE_STATEehstorioctl.h 中声明为以下内容。

typedef struct tagACT_QUEUE_STATE
{
    BOOLEAN fFrozen;
} ACT_QUEUE_STATE;

输入缓冲区长度

ACT_QUEUE_STATE 结构的长度。

输出缓冲区

没有。

输出缓冲区长度

没有。

状态块

可以在 状态 字段中返回以下值之一。

状态值 描述
STATUS_SUCCESS 队列状态已成功更改。
STATUS_INVALID_BUFFER_SIZE 输入缓冲区长度太小。
STATUS_ACCESS_DENIED IOCTL 请求不是由接收器驱动程序发出的。

言论

如果需要临时未经授权,接收器驱动程序或应用程序可以冻结存储设备 IO 请求队列。 通常,在低功率状态或策略需要锁定增强型存储设备(例如锁定的用户会话)时,临时未经授权的发生。 在这种情况下,最好将挂起的 IO 请求置于保留状态,而不是使 IO 请求失败并导致数据丢失。

为了防止应用程序滥用 IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE 请求,只有驱动程序才能发出此 IOCTL。 如果从用户模式应用程序发送,此请求将失败并STATUS_ACCESS_DENIED。

要求

要求 价值
最低支持的客户端 从 Windows 8 开始可用
标头 ehstorioctl.h (include EhStorIoctl.h)

另请参阅

IOCTL_EHSTOR_DEVICE_GET_QUEUE_STATE