C ++ USB与USB复合设备通信(usbccgp.sys)

时间:2014-03-30 12:01:15

标签: c++ usb libusb-1.0

我使用C ++和libusb-win32尝试与商业USB设备进行通信...我对USB编程知之甚少,但我想发送一些命令我使用嗅探器程序知道的设备。 Libusb-win32似乎没问题,但看起来它只能在使用libusb驱动程序的设备上使用。 我想在带有驱动程序的设备上使用它" USB复合设备"驱动程序由windows usbccgp.sys提供......它甚至可能吗?如果没有,我该怎么做? 我只需要发送一些控制传输

2 个答案:

答案 0 :(得分:1)

目前无法做到这一点。 libusb是围绕Linux驱动程序模型设计的,其中复合设备被系统视为单个设备。 Windows将复合设备视为多个独立设备 - 父复合设备和每个接口的子设备。

因此,如果没有先将父驱动程序更改为支持libusb的驱动程序,libusb将无法访问子设备。可以这样做,但设备将无法与供应商提供的软件一起使用。

答案 1 :(得分:0)

如果您想与商业设备交谈,您需要联系制造商,了解该设备是否有通过其驱动程序发布的界面。大多数制造商都没有办法在产品中与通用控制请求进行交互。可能存在未记录的IOCTL,但您需要再次使用它们来获取此信息。

如果您只想挂钩设备并向其发送控制请求,则需要使用libusb驱动程序替换制造商的驱动程序。这里的问题是,虽然您可以使用设备,但它可能无法以您想要的方式运行,除非您欺骗制造商所做的事情(例如,设备可能期望某些供应商特定的通信以使设备准备好与主机交互) 。如果您确实看到了问题,那么您可以通过某些硬件分析器查看USB线来对供应商特定协议进行反向工程。

阅读USB Complete,它是对USB协议的精彩介绍,可以帮助您了解USB设备与主机PC之间的更多信息。