estructura de WDF_USB_CONTINUOUS_READER_CONFIG (wdfusb.h)

[Se aplica a KMDF y UMDF]

La estructura WDF_USB_CONTINUOUS_READER_CONFIG contiene información que usa el marco para configurar un lector continuo para una canalización USB.

Sintaxis

typedef struct _WDF_USB_CONTINUOUS_READER_CONFIG {
  ULONG                                 Size;
  size_t                                TransferLength;
  size_t                                HeaderLength;
  size_t                                TrailerLength;
  UCHAR                                 NumPendingReads;
  PWDF_OBJECT_ATTRIBUTES                BufferAttributes;
  PFN_WDF_USB_READER_COMPLETION_ROUTINE EvtUsbTargetPipeReadComplete;
  WDFCONTEXT                            EvtUsbTargetPipeReadCompleteContext;
  PFN_WDF_USB_READERS_FAILED            EvtUsbTargetPipeReadersFailed;
} WDF_USB_CONTINUOUS_READER_CONFIG, *PWDF_USB_CONTINUOUS_READER_CONFIG;

Miembros

Size

Tamaño, en bytes, de esta estructura.

TransferLength

Longitud máxima, en bytes, de datos que se pueden recibir desde el dispositivo.

HeaderLength

Desplazamiento, en bytes, en el búfer que recibe datos del dispositivo. El marco almacenará datos del dispositivo en un búfer de lectura, empezando por el valor de desplazamiento. En otras palabras, este espacio precede al espacio de tamaño TransferLength en el que el marco almacena los datos del dispositivo.

TrailerLength

Longitud, en bytes, de un espacio de búfer final. Este espacio sigue el espacio de tamaño TransferLength en el que el marco almacena los datos del dispositivo.

NumPendingReads

Número de solicitudes de lectura que el marco pondrá en cola para recibir datos del destino de E/S. Si este valor es cero, el marco usa un número predeterminado de solicitudes de lectura. Si el valor especificado es mayor que el máximo permitido, el marco usa el máximo permitido. Para obtener más información sobre el miembro NumPendingReads , vea la siguiente sección Comentarios.

BufferAttributes

Estructura WDF_OBJECT_ATTRIBUTES que especifica atributos de objeto para el objeto de memoria del marco que crea el marco para cada solicitud de lectura. Este miembro puede ser NULL. No se puede establecer el miembro ParentObject de la estructura WDF_OBJECT_ATTRIBUTES.

EvtUsbTargetPipeReadComplete

Puntero a la función de devolución de llamada EvtUsbTargetPipeReadComplete del controlador.

EvtUsbTargetPipeReadCompleteContext

Puntero sin tipo a la información de contexto definida por el controlador que el marco pasa a la función de devolución de llamada EvtUsbTargetPipeReadComplete del controlador.

EvtUsbTargetPipeReadersFailed

Puntero a la función de devolución de llamada EvtUsbTargetPipeReadersFailed del controlador. Este puntero es opcional y puede ser NULL. Para obtener más información sobre este parámetro, vea la sección Comentarios de WdfUsbTargetPipeConfigContinuousReader.

Comentarios

La estructura WDF_USB_CONTINUOUS_READER_CONFIG se usa como entrada para el método WdfUsbTargetPipeConfigContinuousReader .

Para inicializar una estructura de WDF_USB_CONTINUOUS_READER_CONFIG, el controlador debe llamar a WDF_USB_CONTINUOUS_READER_CONFIG_INIT.

Use las instrucciones siguientes al elegir un valor para el miembro NumPendingReads :

  • Establezca NumPendingReads en 0 si desea que el controlador use el valor predeterminado del marco.

    El valor predeterminado es mayor que 1 y se ha determinado que proporciona un rendimiento razonablemente bueno para muchos dispositivos en muchas configuraciones de procesador.

  • Establezca NumPendingReads en 1 si es importante que el controlador reciba búferes de datos en el orden exacto en que el dispositivo entrega los datos.
  • Establezca NumPendingReads en un número que cumpla los requisitos de rendimiento del dispositivo, en función de las medidas de rendimiento exhaustivas.

    En primer lugar, pruebe el dispositivo con el valor predeterminado (0) para NumPendingReads. Las pruebas deben incluir varias configuraciones de hardware, incluidos diferentes tipos y números de procesadores y diferentes controladores de host USB y configuraciones USB. A continuación, puede experimentar con valores superiores mediante las mismas pruebas. Un controlador que podría requerir un valor más alto es uno para un dispositivo que tiene una tasa de interrupción alta, donde los datos se pueden perder si las interrupciones no se aparecen rápidamente.

Un valor NumPendingReads demasiado grande puede ralentizar el rendimiento de un sistema. Debe usar el valor más bajo que cumpla los requisitos de rendimiento. Normalmente, los valores superiores a 3 o 4 no mejoran el rendimiento de los datos. Sin embargo, los valores más altos pueden reducir la latencia o la posibilidad de que falten datos en una canalización de alta frecuencia.

Requisitos

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

Consulte también

EvtUsbTargetPipeReadComplete

EvtUsbTargetPipeReadersFailed

WDF_OBJECT_ATTRIBUTES

WDF_USB_CONTINUOUS_READER_CONFIG_INIT

WdfUsbTargetPipeConfigContinuousReader