Función WdfDeviceConfigureRequestDispatching (wdfdevice.h)
[Se aplica a KMDF y UMDF]
El método WdfDeviceConfigureRequestDispatching hace que el marco pone en cola un tipo especificado de solicitudes de E/S a una cola de E/S especificada.
Sintaxis
NTSTATUS WdfDeviceConfigureRequestDispatching(
[in] WDFDEVICE Device,
[in] WDFQUEUE Queue,
[in] WDF_REQUEST_TYPE RequestType
);
Parámetros
[in] Device
Proporciona un identificador a un objeto de dispositivo de marco.
[in] Queue
Proporciona un identificador a un objeto de cola de marco.
[in] RequestType
Proporciona un enumerador de tipo WDF_REQUEST_TYPE que identifica el tipo de solicitud que se va a poner en cola. Los únicos enumeradores válidos son:
WdfRequestTypeCreate
WdfRequestTypeRead
WdfRequestTypeWrite
WdfRequestTypeDeviceControl
WdfRequestTypeDeviceControlInternal
Valor devuelto
Si la operación se realiza correctamente, el método devuelve STATUS_SUCCESS. Entre los valores devueltos adicionales se incluyen:
Código devuelto | Descripción |
---|---|
|
Un parámetro de entrada no es válido. |
|
La cantidad de memoria disponible es demasiado baja. |
|
El controlador ya ha asignado una cola al tipo de solicitud especificado. |
El método podría devolver otros valores NTSTATUS.
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Comentarios
Cada llamada a WdfDeviceConfigureRequestDispatching especifica un tipo de solicitud. Si desea que una única cola de E/S reciba varios tipos de solicitudes (por ejemplo, solicitudes de lectura y escritura), el controlador puede llamar a WdfDeviceConfigureRequestDispatching varias veces para una sola cola de E/S.
Para obtener más información sobre WdfDeviceConfigureRequestDispatching, vea Creating I/O Queues and Managing I/O Queues.
Ejemplos
En el ejemplo de código siguiente se inicializa una estructura de WDF_IO_QUEUE_CONFIG , se crea una cola de E/S y, a continuación, se configura la cola para que reciba solicitudes de escritura.
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;
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfdevice.h (incluir Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |