USB_PORT_CONNECTOR_PROPERTIES structure (usbioctl.h)

La structure USB_PORT_CONNECTOR_PROPERTIES est utilisée avec la demande de contrôle d’E /S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES pour récupérer des informations sur un port sur un hub SuperSpeed particulier.

Syntaxe

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;

Membres

ConnectionIndex

Numéro de port interrogé dans la demande. ConnectionIndex est spécifié par l’appelant. S’il existe n ports sur le hub SuperSpeed, les ports sont numérotés de 1 à n. Pour obtenir le nombre de ports, l’appelant envoie d’abord une demande de contrôle d’E /S IOCTL_USB_GET_HUB_INFORMATION_EX. La requête récupère le numéro de port le plus élevé sur le hub.

ActualLength

Nombre d’octets requis pour contenir l’intégralité de la structure USB_PORT_CONNECTOR_PROPERTIES , y compris la chaîne qui contient le nom de lien symbolique du hub compagnon. Cette chaîne est stockée dans le membre CompanionHubSymbolicLinkName . La valeur ActualLength est retournée par la requête IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES et utilisée par l’appelant pour allouer une mémoire tampon afin de stocker les informations reçues. Pour plus d’informations, consultez IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES.

UsbPortProperties

Propriétés du port. À l’issue de la demande de IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES , UsbPortProperties contient un OR au niveau du bit d’un ou de plusieurs indicateurs indiquant les propriétés et les fonctionnalités du port. Les indicateurs sont définis dans USB_PORT_PROPERTIES.

CompanionIndex

Index du port complémentaire associé au port interrogé (spécifié par ConnectionIndex). S’il existe n ports compagnons, ces ports sont indexés de 0 à n–1.

Si un port est mappé à plusieurs ports complémentaires, CompanionIndex est incrémenté sur plusieurs requêtes pour énumérer tous les ports complémentaires.

Pour les hubs SuperSpeed et les contrôleurs xHCI, CompanionIndex est toujours 0. Pour plus d'informations, consultez la section Notes.

CompanionPortNumber

Numéro de port du port compagnon fourni par CompanionIndex. Si le port interrogé partage un connecteur USB avec un port sur un autre hub, CompanionPortNumber indique le numéro de port du port sur l’autre hub.

Note Pour le hub racine d’un contrôleur xHCI, le port partagé peut se trouver sur le même hub.
 

CompanionHubSymbolicLinkName[1]

Chaîne Unicode qui contient le lien symbolique du hub compagnon qui partage le connecteur USB. S’il existe un hub compagnon, CompanionPortNumber est différent de zéro. Sinon, CompanionHubSymbolicLinkName [0] a la valeur NULL.

Remarques

Un hub SuperSpeed 3.0 contient deux implémentations de hub indépendantes. L’une d’elles concerne les appareils USB 2.0, et l’implémentation du hub est similaire aux hubs 2.0 existants. L’autre hub est uniquement destiné aux appareils SuperSpeed. Étant donné que la signalisation de bus USB 2.0 et 3.0 sont électriquement indépendantes, ces deux hubs fonctionnent simultanément. Par conséquent, lorsqu’un hub SuperSpeed est connecté à l’hôte, Windows énumère les deux hubs indépendamment ; un hub est associé à un port USB 2.0 et l’autre à un port USB 3.0. Chaque hub a ses ports en aval et amont. Les connecteurs physiques USB sont partagés entre les ports associés à ces deux implémentations de hub.

De même, un contrôleur xHCI doit être en mesure de gérer des appareils SuperSpeed, à grande vitesse, à pleine vitesse et à basse vitesse. La spécification USB 3.0 nécessite qu’un contrôleur xHCI contienne deux unités d’exécution indépendantes chacune pour les vitesses de bus USB 3.0 et USB 2.0. L’unité d’exécution USB 3.0 gère le trafic SuperSpeed sur le bus. L’unité d’exécution USB 2.0 doit gérer le trafic à faible, plein et haut débit. Cette exigence peut être satisfaite de plusieurs façons. Par instance, dans une implémentation, l’unité d’exécution USB 2.0 peut avoir une unité d’exécution USB 1.1 en aval ou un hub USB 2.0 en aval. L’autre unité d’exécution gère le trafic SuperSpeed sur le bus. Par instance, dans une implémentation, le contrôleur xHCI peut avoir un hub USB 2.0 en aval (au lieu d’un contrôleur hôte USB 2.0) avec un traducteur de transactions pour gérer le trafic à vitesse maximale et à faible vitesse. Ce hub en aval partage des connecteurs avec les ports du hub racine SuperSpeed.

Dans les cas où des connecteurs USB sont partagés, le port qui est interrogé via la demande de contrôle d’E /S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES est spécifié par ConnectionIndex, et le port qui partage le connecteur est appelé port complémentaire. Une fois la demande terminée, les membres CompanionIndex, CompanionPortNumber et CompanionHubSymbolicLinkName de USB_PORT_CONNECTOR_PROPERTIES peuvent être utilisés pour déterminer le routage des ports dans ces cas.

Si plusieurs ports complémentaires sont associés au port interrogé, l’application peut obtenir des informations sur tous les ports complémentaires en envoyant la demande de contrôle d’E /S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES dans une boucle et en incrémentant la valeur CompanionIndex dans chaque itération. Lorsque tous les ports ont été énumérés et qu’aucun port n’est associé à l’index spécifié dans CompanionIndex, la requête se termine correctement, CompanionPortNumber est défini sur 0 et CompanionHubSymbolicLinkName a la valeur NULL.

Pour obtenir des informations sur la vitesse de fonctionnement d’un appareil attaché à un port particulier, l’application peut envoyer le IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 demande de contrôle d’E/S.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Aucun pris en charge
En-tête usbioctl.h (include Usbioctl.h)

Voir aussi

IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES

USB_HUB_INFORMATION_EX

USB_PORT_CONNECTOR_PROPERTIES

USB_PORT_PROPERTIES