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


Функция 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 (include 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