структура WDF_IO_QUEUE_CONFIG (wdfio.h)

[Относится к KMDF и UMDF]

Структура WDF_IO_QUEUE_CONFIG содержит сведения о конфигурации объекта очереди платформы.

Синтаксис

typedef struct _WDF_IO_QUEUE_CONFIG {
  ULONG                                       Size;
  WDF_IO_QUEUE_DISPATCH_TYPE                  DispatchType;
  WDF_TRI_STATE                               PowerManaged;
  BOOLEAN                                     AllowZeroLengthRequests;
  BOOLEAN                                     DefaultQueue;
  PFN_WDF_IO_QUEUE_IO_DEFAULT                 EvtIoDefault;
  PFN_WDF_IO_QUEUE_IO_READ                    EvtIoRead;
  PFN_WDF_IO_QUEUE_IO_WRITE                   EvtIoWrite;
  PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL          EvtIoDeviceControl;
  PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
  PFN_WDF_IO_QUEUE_IO_STOP                    EvtIoStop;
  PFN_WDF_IO_QUEUE_IO_RESUME                  EvtIoResume;
  PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE       EvtIoCanceledOnQueue;
  union {
    struct {
      ULONG NumberOfPresentedRequests;
    } Parallel;
  } Settings;
  WDFDRIVER                                   Driver;
} WDF_IO_QUEUE_CONFIG, *PWDF_IO_QUEUE_CONFIG;

Члены

Size

Длина этой структуры (в байтах).

DispatchType

Перечислитель WDF_IO_QUEUE_DISPATCH_TYPE , определяющий тип отправки запросов для очереди.

PowerManaged

Значение типа WDF_TRI_STATE, которое, если задано значение WdfTrue, указывает, что платформа обрабатывает управление питанием очереди.

Если задано значение WdfFalse, драйвер должен управлять питанием очереди.

Если задано значение WdfUseDefault, платформа обрабатывает управление питанием для очереди, если драйвер не вызывает WdfFdoInitSetFilter.

Драйверы над владельцем политики управления питанием в стеке драйверов не должны устанавливать для элемента PowerManagedзначение WdfTrue.

Дополнительные сведения об управляемых питанием очередях ввода-вывода см. в разделе Управление питанием для очередей ввода-вывода.

AllowZeroLengthRequests

Логическое значение, которое, если значение TRUE, указывает, что драйвер ожидает получать запросы на чтение или запись с нулевой длиной буфера, поэтому платформа доставляет эти запросы драйверу. Если значение FALSE, платформа не доставляет эти запросы драйверу; Вместо этого он завершает их с состоянием завершения STATUS_SUCCESS.

DefaultQueue

Логическое значение, которое, если значение TRUE, указывает, что очередь будет очередью ввода-вывода устройства по умолчанию. Если значение FALSE, очередь не будет очередью устройства по умолчанию.

EvtIoDefault

Указатель на функцию обратного вызова EvtIoDefault для конкретной очереди драйвера или значение NULL.

EvtIoRead

Указатель на функцию обратного вызова EvtIoRead для конкретной очереди драйвера или значение NULL.

EvtIoWrite

Указатель на функцию обратного вызова EvtIoWrite для конкретной очереди драйвера или null.

EvtIoDeviceControl

Указатель на функцию обратного вызова EvtIoDeviceControl для конкретной очереди драйвера или значение NULL.

EvtIoInternalDeviceControl

Указатель на функцию обратного вызова EvtIoInternalDeviceControl для конкретной очереди драйвера или значение NULL.

EvtIoStop

Указатель на функцию обратного вызова EvtIoStop для конкретной очереди драйвера или значение NULL.

EvtIoResume

Указатель на функцию обратного вызова EvtIoResume для конкретной очереди драйвера или значение NULL.

EvtIoCanceledOnQueue

Указатель на функцию обратного вызова EvtIoCanceledOnQueue для конкретной очереди драйвера или null.

Settings

Settings.Parallel

Settings.Parallel.NumberOfPresentedRequests

Для метода параллельной диспетчеризации — максимальное количество запросов ввода-вывода, которые платформа асинхронно доставляет обработчикам запросов очереди ввода-вывода. Дополнительные сведения см. в разделе "Примечания". Для последовательных и ручных методов диспетчеризации этот элемент должен быть равен нулю. Этот член доступен в KMDF версии 1.9 и более поздних версиях.

Driver

Только для внутреннего использования. задано значение NULL. Этот элемент доступен в KMDF версии 1.11 и более поздних версиях.

Комментарии

Драйвер должен инициализировать структуру WDF_IO_QUEUE_CONFIG путем вызова WDF_IO_QUEUE_CONFIG_INIT или WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE.

Структура WDF_IO_QUEUE_CONFIG используется в качестве входного параметра для WdfIoQueueCreate.

Начиная с kmdf версии 1.9, драйверы могут использовать член NumberOfPresentedRequests для указания максимального числа запросов ввода-вывода, которые платформа асинхронно доставляет обработчикам запросов параллельной очереди ввода-вывода. После того как платформа доставляет указанное количество запросов ввода-вывода драйверу, она не доставляет дополнительные запросы из очереди, пока драйвер не завершит, не отменит или не повторит хотя бы один из запросов.

Для параллельных очередей WDF_IO_QUEUE_CONFIG_INIT и WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE задать для элемента NumberOfPresentedRequests значение по умолчанию (-1), указывающее, что платформа может доставлять драйверу неограниченное количество запросов ввода-вывода.

Требования

Требование Значение
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfio.h (включая Wdf.h)

См. также раздел

WDF_IO_QUEUE_CONFIG_INIT

WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE

WDF_IO_QUEUE_DISPATCH_TYPE

WdfIoQueueCreate

WdfIoQueueReadyNotify