我有一个专有的USB设备,它具有USB闪存功能。我想从浏览器中复制这种闪烁功能,但我不确定要使用什么API。
访问chrome://usb-internals/
检查我的设备会给我提供以下信息:
这款设备宣传自己的类别代码是8:海量存储。设备没有显示在我的文件系统中,例如,它不是一个普通的USB挂盘。根据this StackOverflow answer的说法,由于安全原因,WebUSB被阻止访问大容量存储设备,我应该使用WebHID。
然而,使用WebHID仍然不允许我连接到我的设备。这是我使用的示例代码:
const filter = [
{
vendorId: 0xabcd, // correct VID:PID obtained via lsusb
productId: 0x1234
}
];
const [device] = await navigator.hid.requestDevice({ filter });
此外,访问chrome://device-log/
使USB和HID设备之间有了明显的区别。例如,当我插入鼠标时,Chrome设备日志显示连接了USB HID设备。当我插入USB驱动器时,调试日志中有两行:一个HID设备,一个大容量存储设备。当我插入我的专有驱动器时,我得到一行: USB大容量存储设备。
我如何才能说服WebHID连接到我专有的大容量存储设备?
发布于 2021-07-11 23:00:02
如果没有重大的改变是不可能的:
USB mss存储使用批量端点,HID通过控制和中断端点传输。
您可以在单个USB设备(带有IAD)上同时实现大容量存储和HID,但是HID的引导加载程序代码看起来与大容量存储的代码有很大的不同。
USB挂盘通常不支持HID,除非有LED或按钮存在。
https://stackoverflow.com/questions/68335417
复制相似问题