<分区>
我正在开发用于 Windows 桌面系统的基于 USB 的外围设备,并且希望避免驱动程序安装步骤。部分原因是由于开发和签署自定义驱动程序所需的资源,部分原因是第三方驱动程序已被证明是用户的重要障碍。
这建议使用标准 USB 设备类。 HID 简单且灵活,但由于 MCU 特定的限制而加剧了低吞吐量。相反,我正在评估模拟大容量存储设备的方案。
诀窍是报告包含隐藏设备 I/O 文件的 FAT 文件系统的元数据,然后接口(interface)应用程序使用原始文件无缓冲 I/O 进行通信。硬连线 I/O 文件扇区之外的所有数据在枚举时重新加载到 RAM 中并被忽略。
到目前为止,这工作出奇地顺利,通过在所有测试的系统上可能经过良好优化的路径进行快速 I/O 和枚举,并且没有特权提升。但是,这显然是对系统的滥用,如果 Windows 决定检测 I/O 数据被不一致地回读、对集群链进行碎片整理、重新格式化为 exFAT,则可能会崩溃等
我的问题是,这种情况是否已知会在实践中发生,或者可能在不久的将来发生?过去有没有尝试过这样的计划?大量不可靠的 USB 大容量存储设备是否会形成有效的屏障来防止操作系统变得花哨?
最后,是否有任何其他标准 USB 类或方法是我认为更可靠的替代方法? Windows 10 终于添加了标准 CDC 支持,但支持早期版本将涉及绕过签名驱动程序安装(加上蓝屏死机、随机断开连接和枚举失败的历史让我对虚拟串行设备保持警惕。)