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)

Voir aussi