C++ USB 与 USB 复合设备 (usbccgp.sys) 通信
C++ USB communicate with USB Composite Device (usbccgp.sys)
我正在使用C++和libusb-win32来尝试与商业USB设备进行通信...我对USB编程了解不多,但我想向使用嗅探器程序知道的设备发送一些命令。Libusb-win32 看起来还可以,但看起来它只能在使用该设备的 libusb 驱动程序的设备上使用。我想在具有Windows usbccgp提供的驱动程序"USB复合设备"驱动程序的设备上使用它.sys...甚至可能吗?如果没有,我该怎么做?我只需要发送一些控制传输
目前这是不可能的。 libusb 是围绕 Linux 驱动程序模型设计的,其中复合设备被系统视为单个设备。Windows 将复合设备视为多个单独的设备 - 每个接口的父复合设备和子设备。
因此,libusb 无法访问子设备,除非先将父驱动程序更改为 libusb 支持的驱动程序。可以完成,但设备将无法与供应商提供的软件一起使用。
如果要与商业设备通信,则需要联系制造商,并了解是否存在通过其驱动程序发布的该设备的接口。大多数制造商无法与产品中的通用控件请求进行交互。可能存在未记录的 IOCTL,但同样,您需要与他们合作才能获取此信息。
如果您只想挂接设备并向其发送控制请求,则需要将制造商的驱动程序替换为 libusb 驱动程序。这里的问题是,虽然你可以得到设备,但它可能无法按照你想要的方式运行,除非你欺骗制造商的行为(例如,设备可能期望一些供应商特定的通信,以使设备准备好与主机交互)。如果您确实发现问题,那么您可以通过一些硬件分析器查看USB线来对供应商特定的协议进行逆向工程。
阅读 USB 完整版,这是对 USB 协议的精彩介绍,将帮助您详细了解 USB 设备和主机 PC 之间发生的事情。
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 插入或删除时获取usb的dos_name
- 使用 VID、PID、+SN 查找 USB 端口号
- USB传输的LibUSB C++格式不同
- 从 GUID 获取 USB 卷路径
- 如何在C++(VS2010)中设置超时读取USB端口?
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- Android Java USB for native cpp
- mbed:使用 USB 文档库编译会导致错误
- 如何集成 HID USB 控制器?
- 在Windows(C++)中使用USB相机拍摄高分辨率照片
- 如何检测 USRP USB 类型?
- 我是否可以使用 win32 句柄以编程方式记录发送到/接收到 USB/COM 的内容
- 如何在Qt中使用Android上的USB OTG串行接口?
- 只需按一次按钮即可通过USB发送数据
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 通过USB在PC和Arduino之间进行串行通信
- USB-HID 读/写(重叠)等待单个对象不返回C++
- 读取USB与操作系统、C++之间传输的数据
- C++ USB 与 USB 复合设备 (usbccgp.sys) 通信