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.
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.
Requisitos
Requisito | Valor |
---|---|
encabezado de | usb.h (incluya Usb.h) |