The IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE request is sent by silo drivers and applications to change the state of a storage device queue. IO requests in the storage device queue are held when the device is temporarily unauthorized.

Input Parameters

The input buffer at Irp->AssociatedIrp.SystemBuffer contains an ACT_QUEUE_STATE structure. ACT_QUEUE_STATE is declared in ehstorioctl.h as the following.

typedef struct tagACT_QUEUE_STATE
    BOOLEAN fFrozen;


The freeze state of the IO request queue for a storage device. If set to TRUE, the queue is frozen and all IO requests sent to the storage device are held. Otherwise, IO requests in the device queue are processed.

Output Parameters


I/O Status Block

One of the following values can be returned in the Status field.

Status ValueDescription
STATUS_SUCCESSThe queue state was changed successfully.
STATUS_INVALID_BUFFER_SIZEThe input buffer length is too small.
STATUS_ACCESS_DENIEDThe IOCTL request was not issued by a silo driver.



Silo drivers or applications can freeze the storage device IO request queue if temporary unauthorization is needed. Normally, temporary unauthorization occurs during low power states or when a policy requires locking of Enhanced Storage devices such as a locked user session. In such a case, it is preferable to put pending IO requests on hold rather than fail the IO requests and cause data loss.

To prevent abuse of the IOCTL_EHSTOR_DEVICE_SET_QUEUE_STATE request by applications, only a driver can issue this IOCTL. If sent from a user mode application, this request will fail with STATUS_ACCESS_DENIED.



Available starting with Windows 8


EhStorIoctl.h (include EhStorIoctl.h)

See also




Send comments about this topic to Microsoft