IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES IOCTL (usbioctl.h)
La demande de contrôle d’E/S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES est envoyée par une application pour récupérer des informations sur un port spécifique sur un hub USB.
IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES est une demande de contrôle d’E/S en mode utilisateur. Cette requête cible l’appareil hub Serial Bus universel (USB) (GUID_DEVINTERFACE_USB_HUB).
Code principal
Mémoire tampon d’entrée
AssociatedIrp.SystemBuffer pointe vers une structure USB_PORT_CONNECTOR_PROPERTIES allouée par l’appelant. L’appelant doit définir les membres de la structure comme suit :
- L’appelant doit spécifier le numéro de port du port interrogé 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 spécifier le membre CompanionIndex. Pour un hub SuperSpeed, l’appelant doit définir le membre CompanionIndex sur 0.
L’appelant peut utiliser CompanionIndex pour obtenir les numéros de port associés au port interrogé. Si plusieurs ports complémentaires sont associés au port, pour obtenir tous les numéros de port, l’application peut envoyer la requête dans une boucle. Commencez par CompanionIndex défini sur 0 et incrémentez la valeur CompanionIndex dans chaque itération jusqu’à ce que la requête se termine avec CompanionPortNumber défini sur 0 et CompanionHubSymbolicLinkName a la valeur NULL.
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 par l’appelant pointé par AssociatedIrp.SystemBuffer. Pour plus d’informations, consultez Remarques.
Mémoire tampon de sortie
En sortie, USB_PORT_CONNECTOR_PROPERTIES, pointé par AssociatedIrp.SystemBuffer, est rempli d’informations sur le connecteur physique associé au port.
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 requête réussit. Sinon, la pile USB définit 'état à la condition d’erreur appropriée, telle que STATUS_INVALID_PARAMETER ou STATUS_INSUFFICIENT_RESOURCES. Si le hub n’a pas été démarré ou n’est pas fonctionnel, la requête retourne STATUS_UNSUCCESSFUL.
Remarques
L’appelant doit fournir une mémoire tampon suffisamment grande pour contenir une structure USB_PORT_CONNECTOR_PROPERTIES et le nom de lien symbolique d’un hub complémentaire, si un tel hub est associé au port spécifié. Pour obtenir la taille de la mémoire tampon à allouer, l’appelant doit envoyer une demande de IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES. Dans la requête, AssociatedIrp.SystemBuffer doit être une structure USB_PORT_CONNECTOR_PROPERTIES allouée par l’appelant et Parameters.DeviceIoControl.InputBufferLength doit être sizeof(USB_PORT_CONNECTOR_PROPERTIES)
. Une fois l’opération terminée, la ActualLength membre de USB_PORT_CONNECTOR_PROPERTIES indique la taille réelle de la mémoire tampon. Si un nom de lien symbolique existe, la valeur reçue inclut la taille de la chaîne qui stocke le nom du lien.
En fonction de la valeur ActualLength, l’appelant peut ensuite allouer une mémoire tampon et envoyer à nouveau la requête IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES. Une fois la requête terminée, la mémoire tampon est remplie d’informations de port et le membre CompanionHubSymbolicLinkName est une chaîne Unicode qui contient le nom de lien symbolique du hub complémentaire.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8 |
serveur minimum pris en charge | Aucun pris en charge |
d’en-tête | usbioctl.h (include Usbioctl.h) |