我正在尝试使用一些 USB HID 设备。
我有可以与设备交互的专有软件(来自设备供应商)。但我需要自己写一个。
在嗅探器工具的帮助下,我捕获了主机和设备之间的流量。这个工具是BusDog .
然后,我能够使用从 CreateFile 获得的设备句柄通过 WriteFile 重现相同的流量(对于从 setupapi.dll API 获得的路径)。
但是设备不会对我的命令使用react(在 USB/HID 世界中称为“请求”)。
然后我使用了另一个工具——HHD Device Monitoring Studio。 该工具不仅显示“中断传输”,还显示各种传输。 我可以看到以下日志:
008852: Class-Specific Request (DOWN), 20.12.2010 18:58:10.242 +0.031 Destination: Interface, Index 0 Reserved Bits: 34 Request: 0x9 Value: 0x30d Send 0x8 bytes to the device 0D 01 01 00 00 00 00 00 ........ 008853: Control Transfer (UP), 20.12.2010 18:58:10.242 +0.0. Status: 0x00000000 Pipe Handle: 0x8638c5c8 0D 01 01 00 00 00 00 00 ........ Setup Packet 21 09 0D 03 00 00 08 00 !....... Recipient: Interface Request Type: Class Direction: Host->Device Request: 0x9 (Unknown) Value: 0x30d Index: 0x0 Length: 0x8
我的问题是如何在我自己的代码中重新实现这种转移?以及如何将这些东西解析为适当功能的参数(是 DeviceIoControl 吗?)
附注我用的是C#,其实没关系,我能看懂C/C++。
最佳答案
查看 HIDClass 支持例程 ( http://msdn.microsoft.com/en-us/library/ff538865%28v=vs.85%29.aspx ),它为您包装了所有相关的 HID ioctls……它可能类似于功能报告 (HidD_SetFeature)。
关于c# - 如何从软件中捕获准确的 USB-HID 设备交互并在我自己的代码中重新实现它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4491450/