Метод 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 (включая Wudfddi.h) |
DLL | WUDFx.dll |