IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE IOCTL (ehstorioctl.h)
IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE请求由 silo 驱动程序和应用程序发送,用于更改存储设备队列的状态。 当设备暂时未授权时,将保留存储设备队列中的 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 请求不是由 silo 驱动程序发出的。 |
注解
如果需要临时未经授权的操作,Silo 驱动程序或应用程序可以冻结存储设备 IO 请求队列。 通常,在低功耗状态或策略需要锁定增强型存储设备(例如锁定的用户会话)时,会发生临时未经授权的操作。 在这种情况下,最好将挂起的 IO 请求置于保留状态,而不是使 IO 请求失败并导致数据丢失。
为了防止应用程序滥用 IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE 请求,只有驱动程序才能发出此 IOCTL。 如果从用户模式应用程序发送,则此请求将失败并STATUS_ACCESS_DENIED。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用 |
标头 | ehstorioctl.h (包括 EhStorIoctl.h) |