Функция 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 (include Wdf.h) |
библиотеки | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |