首页 文章

C USB与USB复合设备通信(usbccgp.sys)[关闭]

提问于
浏览
1

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

2 回答

  • 0

    目前这是不可能的 . libusb是围绕Linux驱动程序模型设计的,其中复合设备被系统视为单个设备 . Windows将复合设备视为多个独立设备 - 父复合设备和每个接口的子设备 .

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

  • 1

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

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

    阅读USB Complete,它在USB设备和主机PC之间进行's a great introduction to the USB protocol and will help you understand more of what' .

相关问题