Pregunta

Estoy tratando de hablar a un dispositivo USB con libusb, pero me siento como que estoy de disparo hasta la primera etapa de la carrera.Sé precisamente lo que los extremos necesito hablar, etc., pero no puedo incluso llegar a ese extremo.Tengo, en esencia:

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

Ahora, puedo ver la información del dispositivo en modo de depuración y sé que la configuración actual es 0 (sin inicializar / justo después de reiniciar), y hay exactamente 1 configuración válida, que tiene una configuración de número de 1.Pero cuando me puse el config a 1, me sale un valor de retorno de -22, que (pasa a través de la stringifier) se traduce en la "api de windows de error:parámetro incorrecto.

No he sido capaz de encontrar a otras personas que tienen un problema similar, y parece que una cosa tan simple de hacer, ni siquiera puedo reclamar la interfaz, o establecer el alt-interfaz, ni nada de eso, porque tengo que establezca la configuración.Lo que me estoy perdiendo?(si importa:esto es en WinXP)

¿Fue útil?

Solución

Mirando libusb-win32\src\driver\set_configuration.c, parece ser que hay un montón de razones diferentes para el retorno de los STATUS_INVALID_PARAMETER.

Uso libusb_set_debug (desde el modo de usuario de la aplicación) para establecer detallado nivel de depuración, a continuación, ejecute Sysinternals DebugView para ver el controlador de mensajes de error.Esperemos que verías una pista de por qué su set_configuration llamada falla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top