IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)

Le contrôle d’E /S IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 est envoyé par une application pour récupérer des informations sur les protocoles pris en charge par un port USB particulier sur un hub. La requête récupère également la fonctionnalité de vitesse du port.

IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 est une demande de contrôle d’E/S en mode utilisateur. Cette requête cible le périphérique hub USB (Universal Serial Bus) (GUID_DEVINTERFACE_USB_HUB).

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

AssociatedIrp.SystemBuffer pointe vers une structure de USB_NODE_CONNECTION_INFORMATION_EX_V2 allouée à l’appelant .

Lors de l’entrée, l’appelant doit définir les membres de la structure comme suit :

  • L’appelant doit spécifier le numéro de port dans le membre ConnectionIndex . ConnectionIndex doit être une valeur comprise entre 1 et n, où n est le numéro de port le plus élevé récupéré dans une demande de contrôle d’E /S IOCTL_USB_GET_HUB_INFORMATION_EX précédente.
  • L’appelant doit définir un indicateur de protocole dans le membre SupportedUsbProtocols (voir USB_PROTOCOLS). Dans Windows 8, SupportedUsbProtocols.Usb300 doit être défini sur 1. Sinon, la requête échoue avec le code d’erreur STATUS_INVALID_PARAMETER.
  • L’appelant doit définir le membre Length sur la taille, en octets, de la mémoire tampon allouée à l’appelant pointée par AssociatedIrp.SystemBuffer. La taille de la mémoire tampon doit être sizeof (USB_NODE_CONNECTION_INFORMATION_EX_V2).

Longueur de la mémoire tampon d’entrée

Le membre Parameters.DeviceIoControl.InputBufferLength indique la taille, en octets, de la mémoire tampon allouée à l’appelant dont la taille est égale sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)à .

Mémoire tampon de sortie

En sortie, la structure USB_NODE_CONNECTION_INFORMATION_EX_V2 pointée par AssociatedIrp.SystemBuffer contient des informations sur l’appareil attaché.

Longueur de la mémoire tampon de sortie

Le membre Parameters.DeviceIoControl.OutputBufferLength indique la taille, en octets, de la mémoire tampon de sortie SystemBuffer.

Bloc d’état

La pile USB définit Irp-IoStatus.Status> sur STATUS_SUCCESS si la demande réussit. Sinon, la pile de pilotes USB définit Status sur la condition d’erreur appropriée, telle que STATUS_INVALID_PARAMETER ou STATUS_INSUFFICIENT_RESOURCES.

Remarques

La requête IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 interroge le hub du port spécifié pour obtenir des informations sur les protocoles pris en charge par le port et la capacité de vitesse de fonctionnement, si un appareil est attaché au port.

Si la requête se termine correctement, le membre SupportedUsbProtocols.Usb200 de USB_NODE_CONNECTION_INFORMATION_EX_V2 indique les protocoles pris en charge par le port. Par instance, si le port prend en charge le protocole de signalisation défini par la spécification USB 2.0, SupportedUsbProtocols.Usb200 est défini sur 1.

Notez que SupportedUsbProtocols.Usb110 est toujours défini sur 1 pour les hubs haute vitesse et full-speed. En effet, un hub haute vitesse prend en charge le protocole USB 1.1 par le biais de transactions fractionnées et de traducteurs de transactions. SupportedUsbProtocols.Usb110 n’est jamais défini sur 1 pour un port USB 3.0.

En outre, la demande détermine également si le port et l’appareil attaché sont capables de fonctionner à SuperSpeed. Si tel est le cas, le membre Flags.DeviceIsSuperSpeedCapableOrHigher est défini sur 1. Si l’appareil attaché au port fonctionne actuellement sur SuperSpeed, DeviceIsOperatingAtSuperSpeedOrHigher est défini sur 1.

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)