C# UsbDevice.FromIdAsync返回null

C# UsbDevice.FromIdAsync返回null,c#,.net,usb,uwp,windows-10-universal,C#,.net,Usb,Uwp,Windows 10 Universal,我有以下代码: private async void OnDeviceAdded(DeviceWatcher watcher, DeviceInformation deviceInformation) { if (deviceInformation.Name.StartsWith("ClearShot") && deviceInformation.IsEnabled) { targetDevice = await

我有以下代码:

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
始终为空

没有崩溃没有什么,它只是空的,没有改变。 为什么?

编辑:这是我在清单中看到的东西:

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


我发现了问题,Windows为我安装的WInUSB驱动程序由于某种原因无法工作,我不得不安装另一个。

我只是注意到,在UsbDevice.FromIdAsync one之后,内存为空。请检查以下内容:

  • 设备管理器中存在带WinUsb驱动程序的设备

  • 注册表中存在具有生成GUID的多字符串参数DeviceInterfaceGuid

    [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,\
    
  • Package.appxmanifest中存在适当的设备容量

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


  • 你知道吗?
    不确定这是否正确。如何获取classID和此类信息?我也不知道详细信息。但一定要把这一点加到问题上,这是相关的。评论在这里不算。有关winusb自定义驱动程序,请参阅(我遇到了相同的问题,自定义驱动程序为我解决了)。您能否解释“设备管理器中存在带有winusb驱动程序的设备”?我该怎么做?是否存在于计算机或设备上?@设备管理器中应存在较粗糙的设备。这意味着:*该设备已物理连接,并且已为其安装了*WinUsb驱动程序。在这种情况下,您将在设备管理器中看到您的设备。“设备管理器”是一个windows应用程序C:\windows\System32\devmgmt.mscI在设备管理器中将其视为“USB组件设备”(在通用串行总线控制器下),但UsbDevice.FromIdAsync仍返回null…@首先应为设备安装更粗糙的WinUsb驱动程序。