Состояния очереди ввода-вывода
Платформа определяет следующие состояния для очередей ввода-вывода:
Простоя
Очередь ввода-вывода не содержит запросов ввода-вывода, и драйвер не обрабатывает запросы, полученные из очереди ввода-вывода.
Готов
Очередь ввода-вывода может получать запросы ввода-вывода от платформы и доставлять запросы ввода-вывода драйверу.
Остановился
Очередь ввода-вывода может принимать запросы ввода-вывода от платформы, но не может доставлять запросы ввода-вывода драйверу, и драйвер не обрабатывает запросы, полученные из очереди ввода-вывода.
Осушенных
Очередь ввода-вывода пуста, она не может получать новые запросы ввода-вывода от платформы, а все запросы ввода-вывода, которые находились в очереди ввода-вывода, были доставлены драйверу.
Очищены
Очередь ввода-вывода пуста, она не может получать новые запросы ввода-вывода от платформы, а все запросы ввода-вывода, которые находились в очереди ввода-вывода, были отменены.
Платформа может присвоить новой очереди ввода-вывода состояние готовности после вызова драйвером WdfIoQueueCreate. Однако очереди ввода-вывода, управляемые питанием , переходют в состояние готовности, только если устройство находится в рабочем (D0) состоянии.
Драйвер может изменить состояние очереди ввода-вывода следующими способами:
Вызов WdfIoQueueStop или WdfIoQueueStopSynchronously , чтобы поместить очередь в остановленное состояние.
Вызов WdfIoQueueDrain или WdfIoQueueDrainSynchronously , чтобы поместить очередь в состояние очистки.
Вызов WdfIoQueuePurge или WdfIoQueuePurgeSynchronously , чтобы поместить очередь в состояние очистки.
Вызов WdfIoQueueStart для возврата очереди в состояние готовности.
Чтобы получить текущее состояние очереди ввода-вывода, драйвер может вызвать WdfIoQueueGetState.