【问题标题】:Can a driver wrap another driver to use WEBUSB一个驱动程序可以包装另一个驱动程序以使用 WEBUSB
【发布时间】:2020-10-25 03:12:17
【问题描述】:

我有一个我想通过 WebUsb 访问的设备,驱动程序是源代码封闭的,所以有没有办法我可以创建自己的驱动程序来包装官方驱动程序?,只是为了让设备从 chrome 和网盘?

更新:

在得到真正帮助我很多的答案之后,我可以说以下内容:

如果您无法访问 USB 固件并且无法对其进行修改以使其与 WebUsb 兼容,则下一个方法是了解设备如何在低级别工作,您无需了解完整的 USB 协议,但至少知道如何发送和接收命令,并且在WINDOWS中是必须的,你的USB设备的驱动程序是WinUsb.sys

您不需要创建一个全新的驱动程序,只需知道设备与计算机之间的通信是如何工作的,然后用javascript重写。

【问题讨论】:

    标签: windows driver webusb


    【解决方案1】:

    WebUSB 旨在提供对 USB 设备的低级别访问,在单个 USB 传输级别。如果设备有一个现有的驱动程序,那么它应该负责传输并向系统上的应用程序提供更高级别的接口。试图将其包装在再次呈现低级界面的东西中会适得其反。

    如果没有关于相关设备及其驱动程序的更多信息,我无法提供更准确的建议。

    一种工作量很大但可能更广泛适用的选项是围绕现有驱动程序编写一个包装器,允许它使用 WebUSB 连接到设备。已经有一些工作,例如,它通过提供一个内部使用 WebUSB 的 libusb 端口,将使用 libusb 的用户空间驱动程序移植到 Web。这对于开源驱动程序更容易工作,因为您可以重新编译它们以使用包装器。例如,如果这是一个封闭源代码的原生 Windows 驱动程序,那么在网络上的模拟器中运行该驱动程序将是一项艰巨的任务。

    【讨论】:

    • 您好,感谢您抽出宝贵时间回答这个问题,经过大量研究和逆向工程,我能够理解驱动程序,并且现在能够与 USB 设备通信。感谢您在这里为我提供的所有信息。最后一个问题是,在 Windows 中我可以拥有自己的驱动程序,还是需要始终是 WinUsb.sys tahnks
    • 在 Windows 上,用户空间应用程序需要 winusb.sys 来提供允许它向设备发送传输的 ioctl 接口。在 Linux 和 macOS 上没有这样的“内置”界面。自定义驱动程序可以提供相同的 ioctl 接口,但浏览器需要知道与 Microsoft 兼容且目前不受支持的驱动程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2015-09-14
    • 2020-01-06
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多