IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE IOCTL (ehstorioctl.h)
IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE 请求由接收器驱动程序和应用程序发送,以更改存储设备队列的状态。 当设备暂时未经授权时,将保留存储设备队列中的 IO 请求。
主要代码
输入缓冲区
Irp->AssociatedIrp.SystemBuffer 处的输入缓冲区包含 ACT_QUEUE_STATE 结构。 ACT_QUEUE_STATE 在 ehstorioctl.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) |