2016-09-10 199 views
3

我有這樣的代碼:UsbDevice.FromIdAsync返回null

private async void OnDeviceAdded(DeviceWatcher watcher, DeviceInformation deviceInformation) 
    { 
     if (deviceInformation.Name.StartsWith("ClearShot") && deviceInformation.IsEnabled) 
     { 

      targetDevice = await UsbDevice.FromIdAsync(deviceInformation.Id); 
      OnConnected(EventArgs.Empty); 

     } 

    } 

這實際上是從DeviceWatcher 的問題是,targetDevice總是空稱爲事件。

沒有崩潰沒有什麼,它只是空,不會改變。 爲什麼?

編輯:這是我在清單中的事情:我發現這個問題,即安裝Windows,我因爲某種原因沒有工作了WinUSB驅動

<DeviceCapability Name="usb"> 
    <Device Id="vidpid:184c 0001"> 
     <Function Type="classId:ff * *"/> 
    </Device> 
</DeviceCapability> 
+0

你[添加USB功能到清單](https://msdn.microsoft.com/en-u s/library/windows/hardware/dn303351(v = vs.85).aspx)? –

+0

'<在DeviceCapability名稱= 「USB」> <設備Id = 「vidpid:184C 0001」> <函數類型= 「CLASSID:FF * *」/> ' 不知道這就是正確或不是。 – Ahmad45123

+0

如何獲取classID等信息? – Ahmad45123

回答

1

我只是注意,記憶,它有後UsbDevice.FromIdAsync一個空應檢查以下內容:用了WinUSB驅動程序在設備管理器中的設備的

  1. 存在。在註冊表中與生成的GUID多串參數DeviceInterfaceGUIDs

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_184C&PID_0001\8000013\Device Parameters] 
    "DeviceInterfaceGUIDs"=hex(7):7b,00,32,00,34,00,42,00,35,00,37,00,46,00,34,00,\ 
    37,00,2d,00,41,00,37,00,41,00,43,00,2d,00,34,00,46,00,41,00,32,00,2d,00,39,\ 
    00,43,00,31,00,33,00,2d,00,32,00,38,00,36,00,42,00,30,00,33,00,34,00,46,00,\ 
    
  2. 存在的DeviceCapability適當的Package.appxmanifest的

  3. 存在

    <Capabilities> 
        <DeviceCapability Name="usb"> 
         <Device Id="vidpid:184C 0001"> 
         <Function Type="classId:ff * *" /> 
         <Function Type="name:vendorSpecific" /> 
         </Device> 
        </DeviceCapability>