我正在使用C++和libusb-win32来尝试与一个商业USB设备通信……我不太了解USB编程,但我想向设备发送一些命令,这些命令是我使用嗅探器程序时知道的。Libusb-win32看起来还可以,但它看起来只能在使用libusb设备驱动的设备上使用。我想在windows usbccgp.sys提供的驱动程序"USB复合设备“驱动程序的设备上使用它。这有可能吗?如果没有,我该怎么做呢?我只需要发送一些控制传输
发布于 2018-04-27 15:53:12
这目前是不可能的。libusb是围绕Linux驱动程序模型设计的,其中复合设备被系统视为单个设备。Windows将复合设备视为多个单独的设备-每个接口的父复合设备和子设备。
因此,如果不先将父驱动程序更改为支持libusb的驱动程序,libusb将无法访问子设备。这是可以做到的,但是设备将不能与供应商提供的软件一起工作。
发布于 2014-03-31 23:19:23
如果你想与商业设备对话,你需要联系制造商,并找出是否有通过其驱动程序发布的到该设备的接口。大多数制造商没有办法与产品中的通用控制请求进行交互。可能有一个未记录的IOCTL,但您仍然需要与他们合作才能获得此信息。
如果您只想挂接设备并向其发送控制请求,则需要将制造商的驱动程序替换为libusb驱动程序。这里的问题是,虽然您可以获得设备,但它可能无法以您想要的方式工作,除非您欺骗制造商的操作(例如,设备可能希望通过一些特定于供应商的通信来使设备准备好与主机交互)。如果您确实看到了问题,那么您可以通过一些硬件分析器查看USB线,从而对特定于供应商的协议进行反向工程。
阅读USB Complete,它是对USB协议的一个很好的介绍,并将帮助您更多地了解USB设备和您的主机PC之间发生的事情。
https://stackoverflow.com/questions/22743741
复制相似问题