Вопрос

Я пытаюсь подключиться к USB-устройству с помощью libusb, но чувствую, что споткнулся на первом этапе гонки.Я точно знаю, с какими конечными точками мне нужно поговорить и т. д., но я даже не могу зайти так далеко.У меня, по сути:

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

Теперь я могу просмотреть информацию об устройстве в режиме отладки и знаю, что текущая конфигурация равна 0 (неинициализирована/сразу после перезапуска), и существует ровно 1 действующая конфигурация с номером конфигурации 1.Но когда я устанавливаю конфигурацию на 1, я получаю возвращаемое значение -22, которое (проходящее через строковый преобразователь) переводится как «ошибка API Windows:плохой параметр.

Мне не удалось найти других людей, столкнувшихся с подобной проблемой, и это кажется такой простой задачей — я даже не могу заявить права на интерфейс, или установить альтернативный интерфейс, или что-то в этом роде, потому что я сначала нужно настроить конфигурацию.Что мне не хватает?(если это имеет значение:это на WinXP)

Это было полезно?

Решение

Глядя на libusb-win32\src\driver\set_configuration.c, кажется, что существует множество разных причин для возврата. STATUS_INVALID_PARAMETER.

Использовать libusb_set_debug (из приложения пользовательского режима), чтобы установить уровень подробной отладки, а затем запустите Отладка Sysinternals чтобы просмотреть сообщения об ошибках драйвера.Надеюсь, вы поймете, почему ваш set_configuration звонок не удался.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top