Question

J'essaie de parler à un périphérique USB en utilisant libusb, mais j'ai l'impression de trébucher dès la première étape de la course.Je sais précisément à quels points finaux je dois parler, etc., mais je ne peux même pas aller aussi loin.J'ai en substance :

usb_device *dev = ...; // opened from get_busses()
usb_set_configuration(dev, dev->config[0].bConfigurationValue); // bConfigVal = 1

Maintenant, je peux consulter les informations sur le périphérique en mode débogage et je sais que la configuration actuelle est 0 (non initialisée / juste après le redémarrage), et qu'il y a exactement 1 configuration valide, qui a un numéro de configuration de 1.Mais lorsque je définis la configuration sur 1, j'obtiens une valeur de retour de -22, qui (transmise via le stringifier) ​​se traduit par « erreur de l'API Windows :mauvais paramètre.

Je n'ai pas réussi à trouver d'autres personnes ayant un problème similaire, et cela semble être une chose si simple à faire - je ne peux même pas revendiquer l'interface, ni définir l'interface alt, ou quoi que ce soit du genre, parce que je il faut d'abord définir la configuration.Qu'est-ce que je rate?(si c'est important :c'est sous WinXP)

Était-ce utile?

La solution

En regardant libusb-win32\src\driver\set_configuration.c, il semble y avoir de nombreuses raisons différentes pour revenir STATUS_INVALID_PARAMETER.

Utiliser libusb_set_debug (à partir de votre application en mode utilisateur) pour définir le niveau de débogage détaillé, puis exécutez Sysinternals DebugView pour voir les messages d'erreur du pilote.J'espère que vous y verrez un indice expliquant pourquoi votre set_configuration l'appel échoue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top