Поделиться через


Функция WdfDeviceConfigureRequestDispatching (wdfdevice.h)

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

Метод WdfDeviceConfigureRequestDispatching заставляет платформу помещать указанный тип запросов ввода-вывода в указанную очередь ввода-вывода.

Синтаксис

NTSTATUS WdfDeviceConfigureRequestDispatching(
  [in] WDFDEVICE        Device,
  [in] WDFQUEUE         Queue,
  [in] WDF_REQUEST_TYPE RequestType
);

Параметры

[in] Device

Предоставляет дескриптор объекту устройства платформы.

[in] Queue

Предоставляет дескриптор объекту очереди платформы.

[in] RequestType

Предоставляет WDF_REQUEST_TYPE типизированный перечислитель, который определяет тип запроса для постановки в очередь. Единственными допустимыми перечислителями являются:

WdfRequestTypeCreate

WdfRequestTypeRead

WdfRequestTypeWrite

WdfRequestTypeDeviceControl

WdfRequestTypeDeviceControlInternal

Возвращаемое значение

Если операция выполнена успешно, метод возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:

Код возврата Описание
STATUS_INVALID_PARAMETER
Входной параметр недопустим.
STATUS_INSUFFICIENT_RESOURCES
Объем доступной памяти слишком мал.
STATUS_WDF_BUSY
Драйвер уже назначил очередь указанному типу запроса.
 

Метод может возвращать другие значения NTSTATUS.

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Комментарии

Каждый вызов WdfDeviceConfigureRequestDispatching определяет один тип запроса. Если требуется, чтобы одна очередь ввода-вывода получала запросы нескольких типов (например, запросы на чтение и запись), драйвер может вызывать WdfDeviceConfigureRequestDispatching несколько раз для одной очереди ввода-вывода.

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

Примеры

В следующем примере кода выполняется инициализация структуры WDF_IO_QUEUE_CONFIG , создание очереди ввода-вывода, а затем настройка очереди таким образом, чтобы она получала запросы на запись.

WDF_IO_QUEUE_CONFIG queueConfig;
WDFQUEUE WriteQueue;

WDF_IO_QUEUE_CONFIG_INIT(
                         &queueConfig,
                         WdfIoQueueDispatchSequential
                         );
queueConfig.EvtIoWrite = MyEvtIoWrite;
status = WdfIoQueueCreate(
                          Device,
                          &queueConfig,
                          WDF_NO_OBJECT_ATTRIBUTES,
                          &WriteQueue
                          );
if(!NT_SUCCESS(status)) {
    return status;
}
status = WdfDeviceConfigureRequestDispatching(
                                              Device,
                                              WriteQueue,
                                              WdfRequestTypeWrite
                                              );
if(!NT_SUCCESS(status)) {
    return status;
}

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfdevice.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

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

WDF_IO_QUEUE_CONFIG_INIT

WdfIoQueueCreate