I/O 队列状态
框架为 I/O 队列定义以下状态:
闲置
I/O 队列不包含任何 I/O 请求,并且驱动程序不会处理从 I/O 队列接收的任何请求。
准备
I/O 队列可以从框架接收 I/O 请求,并且可以将 I/O 请求传递给驱动程序。
停止
I/O 队列可以从框架接收 I/O 请求,但它无法将 I/O 请求传递给驱动程序,并且驱动程序不会处理从 I/O 队列接收的任何请求。
排水
I/O 队列为空,无法从框架接收新的 I/O 请求,并且 I/O 队列中的所有 I/O 请求都已传递到驱动程序。
清除
I/O 队列为空,无法从框架接收新的 I/O 请求,并且 I/O 队列中的所有 I/O 请求都已取消。
驱动程序调用 WdfIoQueueCreate 后,框架可以将新的 I/O 队列设置为就绪状态。 但是,仅当设备处于工作状态 (D0) 状态时, 电源管理的 I/O 队列 才会进入就绪状态。
驱动程序可以通过以下方式更改 I/O 队列的状态:
调用 WdfIoQueueStop 或 WdfIoQueueStopSynchronously 将队列置于停止状态。
调用 WdfIoQueueDrain 或 WdfIoQueueDrainSynchronously 以将队列置于其排出状态。
调用 WdfIoQueuePurge 或 WdfIoQueuePurgeSynchronously 将队列置于其清除状态。
调用 WdfIoQueueStart 以将队列返回到其就绪状态。
若要获取 I/O 队列的当前状态,驱动程序可以调用 WdfIoQueueGetState。