我正在尝试使用一些 USB HID 设备。
我有可以与设备交互的专有软件(来自设备供应商)。但我需要自己写一个。
在嗅探器工具的帮助下,我捕获了主机和设备之间的流量。这个工具是BusDog。
然后我能够通过 WriteFile 使用从 CreateFile 获得的设备句柄重现相同的流量(对于从 setupapi.dll API 获得的路径)。但是设备不会对我的命令做出反应(“请求”,因为它们在 USB/HID 世界中被称为)。
然后我使用了另一个工具——HHD Device Monitoring Studio。该工具不仅显示“中断传输”,还显示各种传输。我可以看到以下日志:
008852:类特定请求 (DOWN),2010 年 12 月 20 日 18:58:10.242 +0.031 目的地:接口,索引 0 保留位:34 请求:0x9 值:0x30d 向设备发送 0x8 个字节 0D 01 01 00 00 00 00 00 ........ 008853:控制转移 (UP),2010 年 12 月 20 日 18:58:10.242 +0.0。状态:0x00000000 管道句柄:0x8638c5c8 0D 01 01 00 00 00 00 00 ........ 安装包 21 09 0D 03 00 00 08 00 !....... 收件人:接口 请求类型:类 方向:主机->设备 请求:0x9(未知) 值:0x30d 索引:0x0 长度:0x8
我的问题是如何在我自己的代码中重新实现这种转移?以及如何将这些东西解析为适当函数的参数(是 DeviceIoControl?)
ps 我用的是C#,其实没多大关系,C/C++都能看懂。