Функция WdfIoQueuePurgeSynchronously (wdfio.h)
[Применимо к KMDF и UMDF]
Метод WdfIoQueuePurgeSynchronously заставляет платформу прекратить постановку запросов ввода-вывода в очередь ввода-вывода и отменять необработанные запросы и отмененные запросы, принадлежащие драйверу.
Синтаксис
void WdfIoQueuePurgeSynchronously(
[in] WDFQUEUE Queue
);
Параметры
[in] Queue
Дескриптор объекта очереди платформы.
Возвращаемое значение
None
Remarks
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
После того как драйвер вызывает WdfIoQueuePurgeSynchronously, платформа прекращает добавлять запросы ввода-вывода в указанную очередь. Платформа отменяет все запросы, которые она не доставила драйверу. Если платформа получает дополнительные запросы для очереди, она завершает их со значением состояния завершения STATUS_INVALID_DEVICE_STATE.
WdfIoQueuePurgeSynchronously возвращает после завершения или отмены всех необработанных запросов и запросов, принадлежащих драйверу.
После очистки очереди ввода-вывода драйвер может перезапустить очередь, вызвав WdfIoQueueStart.
Не вызывайте WdfIoQueuePurgeSynchronously из следующих функций обратного вызова событий объекта очереди, независимо от очереди, с которой связана функция обратного вызова события:
EvtIoDefaultEvtIoDeviceControlEvtIoInternalDeviceControlEvtIoReadEvtIoWrite Дополнительные сведения о методе WdfIoQueuePurgeSynchronously см. в разделе Управление очередями ввода-вывода.
Примеры
В следующем примере кода выполняется очистка указанной очереди ввода-вывода.
WdfIoQueuePurgeSynchronously(ReadQueue);
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfio.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf), NoIoQueuePurgeSynchronously(kmdf) |