hidraw 和 hidapi 的问题

linux上插入一个usb设备,遍历发现其使用了两个节点(hidraw0和hidraw1)
使用open_path参数写hidraw0 可以成功打开, 使用hidraw1不可以
这个就很奇怪了,因为使用 hidapi 的 hid_enumerate 接口遍历说占用了2个hidraw,

难办的是,如果我有多个相同 vendor_id 、product_id 的设备要控制, 通过 hid_enumerate 就有点混乱了
有什么可行的方案吗?
上面说的插一个usb能遍历出2个(1个是无效的),为什么会这样?
hid_device_info结构体成员next不是指向下一个设备的指针吗?

我的部分代码

    hid_device_info *info = hid_enumerate(vendor_id, product_id);
    hid_device_info *first = info;
    for(;info != nullptr; info = info->next) {
          cout << "info: " << hex << info << endl;
          cout << "path: " << info->path << endl;
          cout << "vendor_id: 0x" << hex << info->vendor_id << endl;
          cout << "product_id: 0x" << hex << info->product_id << endl;
    }

可以参考下面的方案,可行还请采纳:

如果你有多个相同的vendor_idproduct_id的设备,你可以通过枚举它们并且通过 serial_number 或者其他特征来区分它们。在调用 hid_open_path() 时可以指定特定的设备,以确保你正在控制正确的设备。

关于你遍历到的两个 hidraw 节点,可能是因为该设备的报告描述符存在多个,或者是因为该设备是一个复杂的设备,包含多个互相独立的功能(每个功能对应一个节点)。你可以通过读取该设备的报告描述符来了解更多信息,以确保你使用的是正确的节点。
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^