USB_NODE_CONNECTION_INFORMATION_EX structure (usbioctl.h)
La structure USB_NODE_CONNECTION_INFORMATION_EX est utilisée conjointement avec la demande de IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX pour obtenir des informations sur la connexion associée au port USB indiqué.
Syntaxe
typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
ULONG ConnectionIndex;
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
UCHAR CurrentConfigurationValue;
UCHAR Speed;
BOOLEAN DeviceIsHub;
USHORT DeviceAddress;
ULONG NumberOfOpenPipes;
USB_CONNECTION_STATUS ConnectionStatus;
USB_PIPE_INFO PipeList[0];
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;
Membres
ConnectionIndex
Contient une valeur supérieure ou égale à 1 qui spécifie le numéro du port.
DeviceDescriptor
Contient une structure de type USB_DEVICE_DESCRIPTOR qui signale le descripteur de périphérique USB retourné par l’appareil attaché pendant l’énumération.
CurrentConfigurationValue
Contient l’ID utilisé avec la demande SetConfiguration pour spécifier la configuration actuelle de l’appareil connecté au port indiqué. Pour une explication de cette valeur, consultez la section 9.4.7 de la spécification Universal Serial Bus 3.1 disponible dans la bibliothèque de documents USB.
Speed
Contient une valeur de type USB_DEVICE_SPEED qui indique la vitesse de l’appareil.
DeviceIsHub
Indique, lorsque la valeur EST TRUE, que l’appareil attaché au port est un hub.
DeviceAddress
Contient l’adresse relative de bus affectée par USB de l’appareil qui est attaché au port.
NumberOfOpenPipes
Indique le nombre de canaux USB ouverts associés au port.
ConnectionStatus
Contient un énumérateur de type USB_CONNECTION_STATUS qui indique la connexion status.
PipeList[0]
Contient un tableau de structures de type USB_PIPE_INFO qui décrit les canaux ouverts associés au port. Les descriptions de canal incluent le décalage de planification du canal et le descripteur de point de terminaison associé. Ces informations peuvent être utilisées pour calculer l’utilisation de la bande passante.
Remarques
Si aucun appareil n’est connecté, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX retourne simplement des informations sur le port. Si un appareil est connecté au port IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX retourne des informations sur le port et l’appareil connecté.
La structure USB_NODE_CONNECTION_INFORMATION_EX est une version étendue de USB_NODE_CONNECTION_INFORMATION. Les deux structures sont identiques, à l’exception d’un membre. Dans la structure étendue, le membre Speed indique la vitesse de l’appareil.
Le membre Speed de la structure USB_NODE_CONNECTION_INFORMATION_EX est un UCHAR et peut spécifier n’importe quelle valeur de l’énumérateur USB_DEVICE_SPEED . Le membre Speed prend en charge jusqu’à UsbHighSpeed (USB 2.0). Pour déterminer si un appareil prend en charge UsbSuperSpeed (USB 3.0), utilisez la structure USB_NODE_CONNECTION_INFORMATION_EX_V2 .
L’extrait de code C++ suivant de l’exemple USBView montre comment déterminer si un appareil prend en charge UsbSuperSpeed (USB 3.0) :
// Since the USB_NODE_CONNECTION_INFORMATION_EX is used to display
// the device speed, but the hub driver doesn't support indication
// of superspeed, we overwrite the value if the super speed
// data structures are available and indicate the device is operating
// at SuperSpeed.
if (connectionInfoEx->Speed == UsbHighSpeed
&& connectionInfoExV2 != NULL
&& (connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedOrHigher ||
connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedPlusOrHigher))
{
connectionInfoEx->Speed = UsbSuperSpeed;
}
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | usbioctl.h (include Usbioctl.h) |