IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE IOCTL (ehstorioctl.h)

IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE请求由 silo 驱动程序和应用程序发送,用于更改存储设备队列的状态。 当设备暂时未授权时,将保留存储设备队列中的 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 请求不是由 silo 驱动程序发出的。

注解

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

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

要求

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

另请参阅

IOCTL_EHSTOR_DEVICE_GET_QUEUE_STATE