c# - 如何从软件中捕获准确的 USB-HID 设备交互并在我自己的代码中重新实现它

标签 c# c hardware usb hid

我正在尝试使用一些 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/

相关文章:

hadoop - 使用 IBM/Datapower 硬件和 Linux 作为 hadoop/hdfs 节点

c# - 你能拼凑出以下线索来帮助我读取 Winbond W83793 芯片的温度吗?

c - 对除第一个元素之外的所有内容进行排序,qsort C

c# - 如何读取文本文件并将其显示到 Visual Studio (C#) 中的 TextBlock

C# - 从一个线程到另一个线程的实时文本馈送

c# - 一个对象从它所在的列表中删除自己的潜在危险是什么?

c - 在 C 中动态调整数组大小

c++ - 在 C++ 类中使用 Objective-C SDK

硬件仿真项目

c# - HttpModule 与 DelegatingHandler - 优点/缺点?