我试着用libusb和一个usb设备通话,但我觉得我在比赛的第一站绊倒了。我很清楚我需要谈什么样的终点,但我甚至都做不到。本质上,我有:
usb_device *dev = ...; // opened from get_busses() usb_set_configuration(dev, dev->config[0].bConfigurationValue); // bConfigVal = 1
现在,我可以在调试模式下查看设备信息,我知道当前配置是0(未初始化/刚重启),只有1个有效配置,配置号为1。但是当我将config设置为1时,我得到的返回值是-22,它(通过字符串化器传递)转换为“WindowsAPI错误:错误参数”。
我没能找到其他人也有类似的问题,这似乎是一件很简单的事情——我甚至不能声明接口,或者设置alt接口,或者其他类似的事情,因为我必须先设置配置。我错过了什么?(如果重要的话:这是在WinXP上)
查看libusb-win32\src\driver\set\configuration.c,返回的原因似乎有很多不同 STATUS_INVALID_PARAMETER .
STATUS_INVALID_PARAMETER
使用 libusb_set_debug (从用户模式应用程序)设置详细调试级别,然后运行 Sysinternals DebugView 查看驱动程序的错误消息。希望你能找到一条线索来解释 set_configuration 呼叫失败。
libusb_set_debug
set_configuration