Compartir a través de


estructura USBD_PIPE_INFORMATION (usb.h)

Los controladores de cliente USB usan la estructura USBD_PIPE_INFORMATION para contener información sobre una canalización desde una interfaz específica.

Sintaxis

typedef struct _USBD_PIPE_INFORMATION {
  USHORT           MaximumPacketSize;
  UCHAR            EndpointAddress;
  UCHAR            Interval;
  USBD_PIPE_TYPE   PipeType;
  USBD_PIPE_HANDLE PipeHandle;
  ULONG            MaximumTransferSize;
  ULONG            PipeFlags;
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;

Miembros

MaximumPacketSize

Especifica el tamaño máximo de paquete, en bytes, que controla esta canalización. Este valor debe ser menor o igual que el valor de wMaxPacketSize en el descriptor de punto de conexión. La pila USB omite este valor si la marca USBD_PF_CHANGE_MAX_PACKET no está establecida en el miembro PipeFlags.

En el caso de los puntos de conexión isócronos de alta velocidad, el valor de MaximumPacketSize recibido incluye el número de bytes que se pueden transferir en transacciones adicionales, si el punto de conexión los admite. Para obtener más información, vea Comentarios.

EndpointAddress

Especifica la dirección del bus para esta canalización.

Interval

Contiene el intervalo de sondeo, indicado por el campo bInterval en el descriptor de punto de conexión correspondiente (USB_ENDPOINT_DESCRIPTOR). Este valor solo es válido para las canalizaciones de interrupción e isócrónicas. En el caso de otros tipos de canalización, se debe omitir este valor. Refleja la configuración del dispositivo en el firmware. Los controladores no pueden cambiarlo.

El intervalo de sondeo, junto con la velocidad del dispositivo y el tipo de controlador host, determinan la frecuencia con la que el controlador debe iniciar una transferencia. El valor de Interval no representa una cantidad fija de tiempo. Es un valor relativo y la frecuencia de sondeo real también dependerá de si el dispositivo y el controlador de host USB funcionan a baja, completa o alta velocidad.

Si el controlador host o el dispositivo funcionan a baja velocidad, el período de tiempo entre transferencias (también conocido como "período de sondeo") se mide en unidades de 1 milisegundos, y el período está relacionado con el valor de Intervalo como se indica en la tabla siguiente:

Intervalo Período de sondeo (fotogramas de 1 milisegundos) Interrumpir Isócrono
De 0 a 15 8 Soportado. No se admite.
De 16 a 35 16 Soportado. No se admite.
De 36 a 255 32 Soportado. No se admite.
 

Para dispositivos y controladores host que pueden funcionar a toda velocidad, el período se mide en unidades de 1 milisegundos fotogramas. Para las transferencias isocronosas de velocidad completa, el valor de Interval y el período de sondeo siempre es 1. Ese valor indica que los datos se pueden transferir en cada fotograma. En el caso de las transferencias de interrupción de velocidad completa, el período de sondeo se deriva del valor Interval. En la tabla siguiente se indican los valores admitidos para los puntos de conexión de interrupción e isócrono.

Intervalo Período de sondeo (fotogramas de 1 milisegundos) Interrumpir Isócrono
1 1 Soportado. Soportado.
De 2 a 3 2 Soportado. No se admite.
De 4 a 7 4 Soportado. No se admite.
De 8 a 15 8 Soportado. No se admite.
De 16 a 31 16 Soportado. No se admite.
De 32 a 255 32 Soportado. No se admite.
 

Para dispositivos y controladores host que pueden funcionar a alta velocidad, el período se mide en unidades de microframes. El período de sondeo se deriva del valor intervalo de mediante la fórmula Polling period = 2 ** (Interval - 1). Los valores calculados se indican en la tabla siguiente:

Intervalo Período de sondeo (microframes) Interrumpir Isócrono
1 1 Soportado. Soportado.
2 2 Soportado. Soportado.
3 4 Soportado. Soportado.
4 8 Soportado. Soportado.
5 16 Soportado. No se admite.
De 6 a 255 32 Soportado. No se admite.
 

Los períodos de sondeo admitidos para las transferencias isócrónicas de alta velocidad son 1, 2, 4 y 8. Si un controlador cliente envía una solicitud de URB_FUNCTION_ISOCH_TRANSFER para un punto de conexión isócrono de alta velocidad con un período de sondeo superior a 8, la solicitud produce un error de estado USBD_STATUS_INVALID_PARAMETER. Para obtener información sobre las transferencias isócrónicas, vea Cómo transferir datos a puntos de conexión isocrónicos USB.

Las asignaciones de las tablas anteriores entre períodos e intervalos de sondeo son válidas en Microsoft Windows 2000 y versiones posteriores del sistema operativo Windows.

PipeType

Especifica qué tipo de transferencia usa esta canalización. Estos valores se definen en la enumeración USBD_PIPE_TYPE.

PipeHandle

Especifica un identificador opaco para la canalización masiva o de interrupción. El controlador del controlador de host devuelve este identificador cuando el controlador cliente selecciona la configuración del dispositivo con un URB de tipo URB_FUNCTION_SELECT_CONFIGURATION o cuando el controlador cliente cambia la configuración de una interfaz con un URB de tipo URB_FUNCTION_SELECT_INTERFACE.

MaximumTransferSize

Especifica el tamaño máximo, en bytes, de una solicitud de transferencia en esta canalización. En Windows Server 2003, Windows XP y sistemas operativos posteriores, este miembro no se usa y no contiene datos válidos.

Para obtener información sobre los tamaños máximos de transferencia de cada tipo de punto de conexión USB en diferentes versiones de Windows, consulte tamaños de paquete y transferencia USB.

Nota Para WinUSB, no use MaximumTransferSize para determinar el tamaño máximo de una transferencia USB. En su lugar, use el valor de MAXIMUM_TRANSFER_SIZE recuperado por WinUsb_GetPipePolicy.
 

PipeFlags

Contiene un OR bit a bit de marcas de canalización que el controlador puede usar para especificar determinadas características configurables de la canalización. El controlador especifica estas características de canalización cuando selecciona la configuración de un dispositivo USB con una solicitud URB cuyo tipo de función es URB_FUNCTION_SELECT_CONFIGURATION.

En la tabla siguiente se explica el significado de cada marca de canalización:

Nombre de marca Significado
USBD_PF_CHANGE_MAX_PACKET Indica que el controlador reemplaza el tamaño máximo de paquete del punto de conexión con el valor especificado en MaximumPacketSize. Este valor debe ser menor o igual que el máximo predeterminado especificado en el descriptor de punto de conexión de la canalización.

Observaciones

Esta estructura contiene información para un punto de conexión, recuperado del descriptor de interfaz del dispositivo. Para obtener una explicación de cómo obtener la información de USBD_PIPE_INFORMATION desde el descriptor de interfaz, vea Cómo seleccionar una configuración para un dispositivo USB.

El valor MaximumPacketSize se deriva del primer 11 bits del wMaxPacketSize campo del descriptor de punto de conexión, que indica el número máximo de bytes que el controlador de host puede enviar o recibir desde el punto de conexión en una sola transacción.

Normalmente, para transferencias de alta velocidad, el controlador host envía o recibe una transacción por microframe. Sin embargo, la alta velocidad, el ancho de banda alto isocronoso o los puntos de conexión de interrupción admiten tasas de datos más altas a través de transacciones adicionales. Esto permite al controlador host transferir hasta 3072 bytes en un solo microframe. El número de transacciones adicionales admitidas por ese tipo de punto de conexión se indica mediante bits 12..11 de wMaxPacketSize (el bit menos significativo es 0). Ese número puede ser 0, 1 o 2. Si 12..11 indican 0, el punto de conexión no admite transacciones adicionales por microframe. Si el número es 1, el controlador de host puede enviar una transacción adicional (total de dos transacciones por microframe); 2 indica dos transacciones adicionales (total de tres transacciones por microframe).

El valor recibido en MaximumPacketSize para un punto de conexión isócrono (alta velocidad y ancho de banda alto) indica el número total de bytes que el controlador de host puede enviar o recibir desde el punto de conexión en un microframe. El valor incluye el número de bytes en transacciones adicionales, si el punto de conexión los admite. Por ejemplo, tenga en cuenta las siguientes características de punto de conexión isócrono:

  • wMaxPacketSize es 1024
  • Los bits 12..11 indican 2
  • intervalo es 1.
En el ejemplo anterior, el valor recibido en MaximumPacketSize es de 3072 bytes (Total de transacciones * wMaxPacketSize). Dado que intervalo es 1, el período de sondeo es 1. Por lo tanto, el controlador de host puede transferir 3072 bytes en cada microframe de un fotograma. En una única solicitud de E/S (descrita en un URB), el controlador de host no puede transferir más de 24 576 bytes.

Requisitos

Requisito Valor
encabezado de usb.h (incluya Usb.h)

Consulte también

estructuras USB de

USB_ENDPOINT_DESCRIPTOR