estructura USB_PORT_CONNECTOR_PROPERTIES (usbioctl.h)
La estructura USB_PORT_CONNECTOR_PROPERTIES se usa con la solicitud de control de E/S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES para recuperar información sobre un puerto en un centro de SuperSpeed determinado.
Sintaxis
typedef struct _USB_PORT_CONNECTOR_PROPERTIES {
ULONG ConnectionIndex;
ULONG ActualLength;
USB_PORT_PROPERTIES UsbPortProperties;
USHORT CompanionIndex;
USHORT CompanionPortNumber;
WCHAR CompanionHubSymbolicLinkName[1];
} USB_PORT_CONNECTOR_PROPERTIES, *PUSB_PORT_CONNECTOR_PROPERTIES;
Miembros
ConnectionIndex
Número de puerto que se consulta en la solicitud. ConnectionIndex lo especifica el autor de la llamada. Si hay n puertos en el centro de SuperSpeed, los puertos se numeran de 1 a n. Para obtener el número de puertos, el autor de la llamada envía primero una solicitud de control de E/S IOCTL_USB_GET_HUB_INFORMATION_EX . La solicitud recupera el número de puerto más alto del centro.
ActualLength
Número de bytes necesarios para contener toda la estructura de USB_PORT_CONNECTOR_PROPERTIES , incluida la cadena que contiene el nombre de vínculo simbólico del concentrador complementario. Esa cadena se almacena en el miembro CompanionHubSymbolicLinkName . El valor ActualLength lo devuelve la solicitud de IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES y la usa el autor de la llamada para asignar un búfer para contener la información recibida. Para más información, consulte IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES.
UsbPortProperties
Propiedades de puerto. Tras la finalización de la solicitud de IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES , UsbPortProperties contiene un OR bit a bit de una o varias marcas que indican las propiedades y funcionalidades del puerto. Las marcas se definen en USB_PORT_PROPERTIES.
CompanionIndex
Índice del puerto complementario asociado al puerto que se consulta (especificado por ConnectionIndex). Si hay n puertos complementarios, esos puertos se indexan de 0 a n-1.
Si un puerto se asigna a más de un puerto complementario, CompanionIndex se incrementa en varias consultas para enumerar todos los puertos complementarios.
Para los concentradores SuperSpeed y los controladores xHCI, CompanionIndex siempre es 0. Para obtener más información, vea la sección Comentarios.
CompanionPortNumber
Número de puerto del puerto complementario proporcionado por CompanionIndex. Si el puerto que se consulta comparte un conector USB con un puerto en otro concentrador, CompanionPortNumber indica el número de puerto del otro concentrador.
CompanionHubSymbolicLinkName[1]
Cadena Unicode que contiene el vínculo simbólico del concentrador complementario que comparte el conector USB. Si existe un concentrador complementario, CompanionPortNumber es distinto de cero. De lo contrario, CompanionHubSymbolicLinkName [0] es NULL.
Comentarios
Un concentrador SuperSpeed 3.0 contiene dos implementaciones de concentrador independientes. Uno es para dispositivos USB 2.0 y la implementación del concentrador es similar a los concentradores 2.0 existentes. El otro concentrador solo es para dispositivos SuperSpeed. Dado que la señalización del bus USB 2.0 y 3.0 son eléctricamente independientes, ambos concentradores funcionan simultáneamente. Por lo tanto, cuando un centro de SuperSpeed está conectado al host, Windows enumera los dos concentradores de forma independiente; un concentrador está asociado a un puerto USB 2.0 y el otro concentrador con un puerto USB 3.0. Cada concentrador tiene sus puertos descendentes y ascendentes. Los conectores físicos USB se comparten entre los puertos asociados a esas dos implementaciones de concentrador.
Del mismo modo, un controlador xHCI debe ser capaz de manejar SuperSpeed, alta velocidad, velocidad completa y dispositivos de baja velocidad. La especificación USB 3.0 requiere un controlador xHCI para contener dos unidades de ejecución independientes cada una para velocidades de bus USB 3.0 y USB 2.0. La unidad de ejecución USB 3.0 controla el tráfico SuperSpeed en el bus. La unidad de ejecución USB 2.0 debe controlar el tráfico bajo, completo y de alta velocidad. Ese requisito se puede cumplir de muchas maneras. Por ejemplo, en una implementación, la unidad de ejecución USB 2.0 puede tener una unidad de ejecución USB 1.1 descendente o un concentrador USB 2.0 de bajada. La otra unidad de ejecución controla el tráfico de SuperSpeed en el bus. Por ejemplo, en una implementación, el controlador xHCI puede tener un concentrador USB 2.0 de bajada (en lugar de un controlador host USB 2.0) con un traductor de transacciones para controlar el tráfico de velocidad completa y baja velocidad. Ese concentrador de bajada comparte conectores con los puertos del centro raíz SuperSpeed.
En los casos en los que se comparten conectores USB, el puerto que se consulta a través de la solicitud de control de E/S de IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES se especifica mediante ConnectionIndex y el puerto que comparte el conector se denomina puerto complementario. Tras la finalización de la solicitud, los miembros CompanionIndex, CompanionPortNumber y CompanionHubSymbolicLinkName de USB_PORT_CONNECTOR_PROPERTIES se pueden usar para determinar el enrutamiento de puertos en esos casos.
Si hay más de un puerto complementario asociado al puerto que se está consultando, la aplicación puede obtener información sobre todos los puertos complementarios enviando la solicitud de control de E/S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES en un bucle e incrementando el valor CompanionIndex en cada iteración. Cuando se han enumerado todos los puertos y no hay ningún puerto asociado al índice especificado en CompanionIndex, la solicitud se completa correctamente, CompanionPortNumber se establece en 0 y CompanionHubSymbolicLinkName es NULL.
Para obtener información sobre la velocidad de funcionamiento de un dispositivo conectado a un puerto determinado, la aplicación puede enviar la solicitud de control de E/S de IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 .
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 |
Servidor mínimo compatible | No se admite ninguno |
Encabezado | usbioctl.h (incluya Usbioctl.h) |
Consulte también
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2