Функция 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. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Входной параметр недопустим. |
|
Объем доступной памяти слишком мал. |
|
Драйвер уже назначил очередь указанному типу запроса. |
Метод может возвращать другие значения 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) |