title | description | keywords | ms.date | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
I/O Queue States |
I/O Queue States |
|
04/20/2017 |
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:
-
Calling WdfIoQueueStop or WdfIoQueueStopSynchronously to place the queue in its stopped state.
-
Calling WdfIoQueueDrain or WdfIoQueueDrainSynchronously to place the queue in its drained state.
-
Calling WdfIoQueuePurge or WdfIoQueuePurgeSynchronously to place the queue in its purged state.
-
Calling WdfIoQueueStart to return the queue to its ready state.
To obtain an I/O queue's current state, your driver can call WdfIoQueueGetState.