I/O Queue States

The framework defines the following states for I/O queues:

Idle
The I/O queue contains no I/O requests, and the driver is not processing any requests that it received from the I/O queue.

Ready
The I/O queue can receive I/O requests from the framework, and it can deliver I/O requests to the driver.

Stopped
The I/O queue can receive I/O requests from the framework, but it cannot deliver I/O requests to the driver, and the driver is not processing any requests that it received from the I/O queue.

Drained
The I/O queue is empty, it cannot receive new I/O requests from the framework, and all I/O requests that were in the I/O queue have been delivered to the driver.

Purged
The I/O queue is empty, it cannot receive new I/O requests from the framework, and all I/O requests that were in the I/O queue have been canceled.

The framework can set a new I/O queue to the ready state after your driver calls WdfIoQueueCreate. However, power-managed I/O queues enter the ready state only if the device is in its working (D0) state.

Your driver can change an I/O queue's state by:

To obtain an I/O queue's current state, your driver can call WdfIoQueueGetState.