C ++ USB обменивается данными с USB Composite Device (usbccgp.sys)

Я использую C ++ и libusb-win32, чтобы попытаться общаться с рекламой USB устройство … Я не знаю много о программировании USB, но я хочу отправить некоторые команды на устройство, которое я знаю с помощью программы сниффера. Libusb-win32 выглядел нормально, но, похоже, его можно использовать только на устройстве, которое использует libusb Драйвер для устройства.
Я хочу использовать его на устройстве с драйвером «USB Composite Device», предоставляемым windows usbccgp.sys … это вообще возможно? Если нет, как я могу это сделать?
Мне просто нужно отправить несколько контрольных переводов

1

Решение

В настоящее время это невозможно. libusb разработан на основе модели драйвера Linux, в которой составные устройства рассматриваются системой как единое устройство. Windows рассматривает составные устройства как несколько отдельных — родительское составное устройство и дочерние устройства для каждого интерфейса.

Таким образом, libusb не может получить доступ к дочерним устройствам без предварительного изменения родительского драйвера на драйвер, поддерживаемый libusb. Это можно сделать, но тогда устройство не будет работать с поставляемым поставщиком программным обеспечением.

1

Другие решения

Если вы хотите поговорить с коммерческим устройством, вам нужно связаться с производителем и выяснить, есть ли интерфейс к этому устройству, который публикуется через его драйвер. Большинство производителей не имеют возможности взаимодействовать с общими запросами управления в продукте. Там может быть недокументированный IOCTL, но опять же вам придется работать с ними, чтобы получить эту информацию.

Если вы просто хотите подключить устройство и отправить ему контрольный запрос, вам необходимо заменить драйвер производителя драйвером libusb. Проблема здесь заключается в том, что, хотя вы можете подключиться к устройству, оно может функционировать не так, как вы хотите, если вы не подделываете то, что делает производитель (например, устройство может ожидать, что какая-то конкретная связь от поставщика подготовит устройство к взаимодействию с хостом) , Если вы видите проблемы, то вы можете провести обратный инжиниринг конкретного протокола производителя, посмотрев на линию USB через какой-то аппаратный анализатор.

Читать USB Complete, Это отличное введение в протокол USB и поможет вам лучше понять, что происходит между USB-устройством и вашим хост-компьютером.

0

По вопросам рекламы [email protected]