2010-06-29 19 views
1

Y a-t-il un moyen, en utilisant simplement l'API win32, de découvrir quelle version d'USB est disponible? La construction de XPe est assez barebones et n'a pas WMI. J'ai considéré la technique USBview: énumérer les concentrateurs USB en ouvrant \. \ HCD0 par exemple \. \ HCD9, utiliser DeviceIoControl pour obtenir le nom du concentrateur et rechercher un contrôleur hôte amélioré. Mais pour construire ceci, j'aurais besoin du DDK que je ne connais pas et que je ne veux pas installer sauf si je le dois vraiment.Utilisez l'API win32 pour voir si un système Windows XPe a USB2 ou juste 1.1

Y a-t-il un moyen plus simple?

Répondre

1

Comme vous le mentionnez, UsbView énumère les concentrateurs et périphériques USB. Sa source est dans le DDK à ddk \ xp \ src \ wdm \ usb \ usbview.

J'ai trouvé une approche plus simple qui était spécifique à l'appareil et qui fonctionnait dans ma situation. J'ai été en mesure de déterminer la vitesse en fonction de la taille maximale des paquets pour l'appareil. La taille du paquet est dans le membre struct MaximumPacketSize dans la structure USBD_PIPE_INFORMATION. Sur MSDN, voir OSRUSBFX2 qui dit "La taille maximale des paquets dépend de la vitesse" - le format USB 2.0 est 0x200 et le format USB 1.1 est 0x40. Recherchez MSDN pour OSRUSBFX2 pour plus d'informations.

Bien que n'étant pas aussi général que l'énumération des périphériques USB, l'approche USBD_PIPE_INFORMATION peut fonctionner dans votre situation et est beaucoup plus simple.