如果该设备是使用webUSB API的复合设备(具有两个接口),则无法打开该设备

时间:2019-02-18 09:53:30

标签: webusb

我正在Windows 10上使用Chrome浏览器v72.0.3626.109(正式版本)(32位)。

  1. 试图声明一个供应商特定的复合USB设备的USB接口,该设备具有一个供应商特定的接口和另一个加载winusb驱动程序的DFU运行时接口。 我已确保尚未加载供应商特定的驱动程序

      

    通过webUSB API device.open()打开设备失败,代码为18(安全错误:访问被拒绝。)

    document.addEventListener('DOMContentLoaded', event => {
      let button = document.getElementById('connect')

      button.addEventListener('click', async() => {
        let device
        const VENDOR_ID = 0x04xx
    const PRODUCT_ID = 0x6xxx

        try {
          device = await navigator.usb.requestDevice({
            filters: [{
          vendorId: VENDOR_ID,
          productId: PRODUCT_ID
            }]
          })

      await device.open(); //Begin a session
      await device.selectConfiguration(1); 
      await device.claimInterface(0); 
      await device.releaseInterface(0); 
      await device.close(); 
    } catch (error) {
      console.log(error)
    }
      await device.close()
  })
})

我尝试过的其他方案...

  1. 我的USB设备仅配备1个接口(供应商特定的批量接口),而未加载驱动程序。该设备未在由requestDevice打开的设备选择菜单中列出。

  2. 我的USB设备仅带有1个接口(DFU运行时接口),并装有winusb驱动程序。设备被列出,打开并声明接口可以使用webUSB API正常工作。

使用webUSB API列出和打开供应商特定的USB设备是否受到限制?我有什么想念的吗?

1 个答案:

答案 0 :(得分:0)

可以使用WebUSB打开特定于供应商的界面,但需要针对该界面加载WinUSB驱动程序。浏览器用来打开设备的Windows API对此有要求。