HID相关工程
+ -

VS2019分析HID报告描述符解析源代码

2021-06-30 2192 0

常有人问,有没有HID解析的工具,好像除了usb官网提供的dt.exe,没有其它的好的东东了。
Linux下有相关的工具,在本站的社区里:http://www.usbzh.com/zone/detail-12.html 可以查看

HID开发,其实最麻烦的就是HID报表描述符了。
这里本人移植了ReactOS的 HidParser.sys的源代码到应用层,现将代码贡献出来。
当然对于特定的设备类,其在其驱动中有更加详尽的代码解析报表描述符。我这里也只是抛砖引玉,既然可以移植,应该所有的相关sys的代码都可以移植了。

工程配置

  • VS2019
  • Windows10 x64

编译调试效果:

测试代码

main.cpp源代码为:


int main()
{
    HIDP_DEVICE_DESC Hidp ;

    UCHAR Report[] = {
     0x05, 0x01, // Global Generic Desktop
         0x09, 0x02, // Local Mouse
         0xa1, 0x01, // Main app collection
         0x09, 0x01, // Local Pointer
         0xa1, 0x00, // Main phy collection
         0x95, 0x03, // Global ReportCount
         0x75, 0x01, // Global ReportSize
         0x05, 0x09, // Global Button
         0x19, 0x01, // Local Usage Min
         0x29, 0x03, // Local Usage Max
         0x15, 0x00, // Global Logical Min
         0x25, 0x01, // Global Logical Max
         0x81, 0x02, // Main Input(Data,Var,Abs)
         0x95, 0x01, // Global ReportCount
         0x75, 0x05, // Global ReportSize
         0x81, 0x03, // Main Input(Cnsr,Var,Abs)
         0x95, 0x03, 0x75, 0x08, // Global ReportCount Global ReportSize
         0x05, 0x01, // Global Generic Desktip
         0x09, 0x30, // Local X
         0x09, 0x31, // Local Y
         0x09, 0x38, // Locak Wheel
         0x15, 0x81, // Global Logical Min
         0x25, 0x7f, // Global Logical Max
         0x81, 0x06, // Main Input(Data,Var,Rel)
         0xc0      // Main End collection
    };

    HidP_GetCollectionDescription((PHIDP_REPORT_DESCRIPTOR)Report, sizeof(Report), 0, &Hidp);
    return 0;
}

工程文件目录文件:

2021/06/22  19:29    <DIR>          .
2021/06/22  19:29    <DIR>          ..
2021/06/22  17:27            23,168 api.cpp
2021/06/22  17:29             7,921 context.cpp
2021/06/22  19:29    <DIR>          Debug
2021/06/22  17:48             8,933 hidp.cpp
2020/04/09  18:06               236 hidp.h
2021/06/22  17:49            34,719 hidparser.cpp
2021/06/22  17:44            10,320 hidparser.h
2021/06/22  17:28             7,623 hidparser.vcxproj
2021/06/22  17:28             1,788 hidparser.vcxproj.filters
2021/06/22  16:59               168 hidparser.vcxproj.user
2021/06/22  19:29             3,007 main.cpp
2021/06/22  17:47            19,933 main.h
2021/06/22  17:48            40,574 parser.cpp
2021/06/22  17:07             8,634 parser.h

什么是hidparser.sys 可参见:http://www.usbzh.com/zone/detail-31.html

下载地址

USB中文网技术交流QQ群下载
源代码/hidparser(www.usbzh.com).zip

QQ群号:952873936

QQ群文件下载需加入本站QQ群。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

HID 启动跟踪与获取报表描术符失败的问题
问题今天改了一下代码,就把从线程中取数改成了直接调用,设备就枚举不成功了~~让人怀疑人生了啊,看来看去没干啥啊,咋就不成功了本着不放弃的精神,然后抓包分析发现SetIdle命令返回异常,就查看REACTOS,源代码~~ Status = Hid_GetDescriptor(DeviceObjec......
VS2019分析HID报告描述符解析源代码
常有人问,有没有HID解析的工具,好像除了usb官网提供的dt.exe,没有其它的好的东东了。Linux下有相关的工具,在本站的社区里:http://www.usbzh.com/zone/detail-12.html 可以查看做HID开发,其实最麻烦的就是HID报表描述符了。这里本人移植了Reac......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!