IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)
La requête d’E/S IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME interroge le pilote de bus pour le nom du périphérique du contrôleur hôte USB.
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME est une demande de contrôle d’E/S en mode noyau. Cette requête cible le PDO du hub USB. Cette demande doit être envoyée à un irQL de PASSIVE_LEVEL.
Code principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Mémoire tampon d’entrée
Parameters.Others.Argument1 doit être un pointeur vers une structure USB_HUB_NAME qui sera renseignée avec le nom du contrôleur hôte.
Longueur de la mémoire tampon d’entrée
Parameters.Others.Argument2 doit être un ULONG spécifiant la longueur de la mémoire tampon (en octets) dans Parameters.Others.Argument1.
Mémoire tampon de sortie
Le pilote de bus remplit la mémoire tampon pointée par Parameters.Others.Argument1 avec le nom de l’appareil du contrôleur d’hôte.
Longueur de la mémoire tampon de sortie
Elle est remplie uniquement jusqu’à la longueur spécifiée dans Parameters.Others.Argument2.
Bloc d’état
Le pilote de bus ou de port définit Irp->IoStatus.Status sur STATUS_SUCCESS ou l’état d’erreur approprié.
Remarques
L’appelant doit fournir une mémoire tampon suffisamment grande pour contenir une structure USB_HUB_NAME. La valeur Parameters.Others.Argument2 indique la taille de cette mémoire tampon. Une fois l’opération terminée, le membre HubName de USB_HUB_NAME contient le nom du contrôleur et le membre ActualLength indique la longueur de la chaîne de nom du contrôleur. Notez que ActualLength n’indique pas la taille de la structure USB_HUB_NAME entière. Si la mémoire tampon fournie dans Parameters.Others.Argument1 n’est pas suffisamment grande pour contenir la chaîne, la valeur HubName peut afficher une chaîne tronquée.
Pour obtenir la taille de la mémoire tampon requise pour contenir la chaîne, envoyez la requête deux fois. Dans la première requête, spécifiez une mémoire tampon qui est au moins sizeof(USB_HUB_NAME)
octets. Sinon, ActualLength n’indique pas la longueur correcte de la chaîne et la requête échoue avec STATUS_BUFFER_TOO_SMALL.
Une fois la première requête terminée, allouez une mémoire tampon de ActualLength + sizeof(ULONG)
octets et envoyez à nouveau la requête. Une fois la requête terminée, HubName indique l’intégralité de la chaîne de nom du contrôleur.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | usbioctl.h |