Метод IWDFDevice::CreateIoQueue (wudfddi.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод CreateIoQueue настраивает очередь ввода-вывода по умолчанию, связанную с устройством, или создает для устройства вторичную очередь ввода-вывода.
Синтаксис
HRESULT CreateIoQueue(
[in, optional] IUnknown *pCallbackInterface,
[in] BOOL bDefaultQueue,
[in] WDF_IO_QUEUE_DISPATCH_TYPE DispatchType,
[in] BOOL bPowerManaged,
[in] BOOL bAllowZeroLengthRequests,
[out] IWDFIoQueue **ppIoQueue
);
Параметры
[in, optional] pCallbackInterface
Указатель на интерфейс IUnknown, который платформа использует для определения функций обратного вызова событий, которые драйвер подписывается на очередь. Это функции, вызываемые платформой при возникновении соответствующих событий.
Для UMDF версий 1.9 и более поздних версий этот параметр требуется для очередей ввода-вывода, использующих последовательный или параллельный метод отправки , и необязательный (можно null) для очередей ввода-вывода, использующих метод отправки вручную. Для версий UMDF до версии 1.9 этот параметр необходим для всех методов диспетчеризации.
[in] bDefaultQueue
Значение boOL, указывающее, следует ли настроить очередь ввода-вывода по умолчанию или создать вторичную очередь ввода-вывода для устройства. TRUE указывает на настройку очереди ввода-вывода по умолчанию; FALSE указывает на создание вторичной очереди ввода-вывода.
[in] DispatchType
Значение WDF_IO_QUEUE_DISPATCH_TYPEтипа, определяющее, как драйвер должен получать запросы из очереди ввода-вывода.
[in] bPowerManaged
Значение boOL, указывающее, управляет ли очередь ввода-вывода питанием. TRUE указывает, что платформа автоматически координирует отправку для очереди ввода-вывода с помощью Plug and Play (PnP) и состояния питания устройства; FALSE указывает, что автоматическая координация отправки не выполняется.
[in] bAllowZeroLengthRequests
Значение BOOL, указывающее, помещает ли платформа запросы ввода-вывода нулевой длины непосредственно в очередь ввода-вывода для обработки драйвера. TRUE указывает, что драйвер должен получать запросы на чтение и запись, имеющие буферы нулевой длины, то есть платформа автоматически помещает эти типы запросов непосредственно в очередь ввода-вывода для драйвера. FALSE указывает, что платформа завершает запросы ввода-вывода нулевой длины, а не помещает их в очередь ввода-вывода.
[out] ppIoQueue
Указатель на переменную, которая получает указатель на интерфейс IWDFIoQueue для только что созданного объекта очереди ввода-вывода или объекта очереди ввода-вывода по умолчанию.
Возвращаемое значение
CreateIoQueue возвращает одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Очередь ввода-вывода успешно создана. |
|
Очередь ввода-вывода настраивается одним из следующих способов:
|
CreateIoQueue также может возвращать другие значения HRESULT.
Замечания
Интерфейс IUnknown, который драйвер предоставляет для параметра pCallbackInterface, может поддерживать несколько функций обратного вызова очереди. Платформа вызывает метод QueryInterface в предоставленном интерфейсе IUnknown несколько раз, чтобы получить методы интерфейса, поддерживаемые драйвером. Когда приложения выполняют действия, связанные с методами поддерживаемых интерфейсов (например, запрос на чтение ввода-вывода), платформа вызывает методы (например, метод IQueueCallbackRead::OnRead), чтобы уведомить драйвер. Платформа вызывает QueryInterface для следующих интерфейсов:
IQueueCallbackDefaultIoHandler
Когда драйвер передает WdfIoQueueDispatchSequential или WdfIoQueueDispatchParallel для параметра DispatchTypeCreateIoQueue для создания неуправляемой очереди, CreateIoQueue может возвращать S_OK только в том случае, если объект обратного вызова очереди драйвера реализует по крайней мере один из предыдущих интерфейсов и указывает поддержку таких интерфейсов через интерфейс IUnknown, на который pCallbackInterface указывает.
Когда драйвер передает WdfIoQueueDispatchManual для DispatchType для создания очереди вручную, CreateIoQueue может возвращать S_OK только если объект обратного вызова очереди драйвера не реализует или не указывает поддержку любого из предыдущих интерфейсов обратного вызова. Дополнительные сведения об объектах обратного вызова драйвера см. в создании объектов обратного вызова.
Платформа также вызывает QueryInterface на предоставленном интерфейсе IUnknown, чтобы определить, поддерживает ли драйвер любой из следующих интерфейсов:
Платформа также вызывает QueryInterface в предоставленном интерфейсе IUnknown, чтобы определить, поддерживает ли драйвер интерфейс IQueueCallbackStateChange. Объект обратного вызова очереди драйвера может при необходимости реализовать и указать поддержку IQueueCallbackStateChange только для очереди вручную. Объект обратного вызова очереди драйвера не должен реализовывать и указывать поддержку IQueueCallbackStateChange для последовательной или параллельной очереди.
Примеры
Пример кода использования метода createIoQueue см. в разделе IWDFDriver::CreateDevice.
Требования
Требование | Ценность |
---|---|
завершение поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
целевая платформа | Настольный |
минимальная версия UMDF | 1.5 |
заголовка | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |