Compartir a través de


estructura WDF_IO_QUEUE_CONFIG (wdfio.h)

[Se aplica a KMDF y UMDF]

La estructura WDF_IO_QUEUE_CONFIG contiene información de configuración para un objeto de cola de marco.

Sintaxis

typedef struct _WDF_IO_QUEUE_CONFIG {
  ULONG                                       Size;
  WDF_IO_QUEUE_DISPATCH_TYPE                  DispatchType;
  WDF_TRI_STATE                               PowerManaged;
  BOOLEAN                                     AllowZeroLengthRequests;
  BOOLEAN                                     DefaultQueue;
  PFN_WDF_IO_QUEUE_IO_DEFAULT                 EvtIoDefault;
  PFN_WDF_IO_QUEUE_IO_READ                    EvtIoRead;
  PFN_WDF_IO_QUEUE_IO_WRITE                   EvtIoWrite;
  PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL          EvtIoDeviceControl;
  PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
  PFN_WDF_IO_QUEUE_IO_STOP                    EvtIoStop;
  PFN_WDF_IO_QUEUE_IO_RESUME                  EvtIoResume;
  PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE       EvtIoCanceledOnQueue;
  union {
    struct {
      ULONG NumberOfPresentedRequests;
    } Parallel;
  } Settings;
  WDFDRIVER                                   Driver;
} WDF_IO_QUEUE_CONFIG, *PWDF_IO_QUEUE_CONFIG;

Miembros

Size

Longitud, en bytes, de esta estructura.

DispatchType

Enumerador WDF_IO_QUEUE_DISPATCH_TYPE que identifica el tipo de envío de solicitudes para la cola.

PowerManaged

Valor con tipo WDF_TRI_STATE que, si se establece en WdfTrue, indica que el marco controla la administración de energía de la cola.

Si se establece en WdfFalse, el controlador debe controlar la administración de energía de la cola.

Si se establece en WdfUseDefault, el marco controla la administración de energía de la cola a menos que el controlador llame a WdfFdoInitSetFilter.

Los controladores situados encima del propietario de la directiva de energía en la pila de controladores no deben establecer el miembro PowerManaged en WdfTrue.

Para obtener más información sobre las colas de E/S administradas por energía, consulte Administración de energía para colas de E/S.

AllowZeroLengthRequests

Valor booleano que, si es TRUE, indica que el controlador espera recibir solicitudes de lectura o escritura que tienen una longitud de búfer de cero, por lo que el marco entrega estas solicitudes al controlador. Si es FALSE, el marco no entrega estas solicitudes al controlador; en su lugar, los completa con un estado de finalización de STATUS_SUCCESS.

DefaultQueue

Valor booleano que, si es TRUE, indica que la cola será la cola de E/S predeterminada del dispositivo. Si es FALSE, la cola no será la cola predeterminada del dispositivo.

EvtIoDefault

Puntero a la función de devolución de llamada EvtIoDefault específica de la cola del controlador o NULL.

EvtIoRead

Puntero a la función de devolución de llamada EvtIoRead específica de la cola del controlador o NULL.

EvtIoWrite

Puntero a la función de devolución de llamada EvtIoWrite específica de la cola del controlador o NULL.

EvtIoDeviceControl

Puntero a la función de devolución de llamada EvtIoDeviceControl específica de la cola del controlador o NULL.

EvtIoInternalDeviceControl

Puntero a la función de devolución de llamada EvtIoInternalDeviceControl específica de la cola del controlador o NULL.

EvtIoStop

Puntero a la función de devolución de llamada EvtIoStop específica de la cola del controlador o NULL.

EvtIoResume

Puntero a la función de devolución de llamada EvtIoResume específica de la cola del controlador o NULL.

EvtIoCanceledOnQueue

Puntero a la función de devolución de llamada EvtIoCanceledOnQueue específica de la cola del controlador o NULL.

Settings

Settings.Parallel

Settings.Parallel.NumberOfPresentedRequests

Para el método de distribución en paralelo, el número máximo de solicitudes de E/S que el marco entrega asincrónicamente a los controladores de solicitudes de la cola de E/S. Para obtener más información, vea la sección Comentarios que se muestra más adelante. Para los métodos de envío secuencial y manual, este miembro debe ser cero. Este miembro está disponible en la versión 1.9 y versiones posteriores de KMDF.

Driver

Solo para uso interno. Definición en NULL Este miembro está disponible en la versión 1.11 y versiones posteriores de KMDF.

Comentarios

El controlador debe inicializar la estructura de WDF_IO_QUEUE_CONFIG llamando a WDF_IO_QUEUE_CONFIG_INIT o WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE.

La estructura WDF_IO_QUEUE_CONFIG se usa como parámetro de entrada para WdfIoQueueCreate.

A partir de la versión 1.9 de KMDF, los controladores pueden usar el miembro NumberOfPresentedRequests para especificar el número máximo de solicitudes de E/S que el marco entrega asincrónicamente a los controladores de solicitudes de una cola de E/S paralela. Después de que el marco haya entregado el número especificado de solicitudes de E/S al controlador, no entrega más solicitudes de la cola hasta que el controlador se complete, cancele o vuelva a poner en cola al menos una de las solicitudes.

Para las colas paralelas, WDF_IO_QUEUE_CONFIG_INIT y WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE establezca el miembro NumberOfPresentedRequests en su valor predeterminado (-1), lo que indica que el marco puede entregar un número ilimitado de solicitudes de E/S al controlador.

Requisitos

Requisito Value
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfio.h (incluya Wdf.h)

Consulte también

WDF_IO_QUEUE_CONFIG_INIT

WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE

WDF_IO_QUEUE_DISPATCH_TYPE

WdfIoQueueCreate

WdfIoQueueReadyNotify