无法在Windows 10 UWP中使用HIDDevice类打开HID USB设备

时间:2018-02-04 20:33:09

标签: c# uwp win-universal-app windows-10-universal hid

以下代码在某些Windows 10系统中返回null

currentDevice = await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
                               FileAccessMode.ReadWrite);

我发现可以通过重新安装Windows 10 /或在Windows 10中使用“Fresh”选项来解决此问题,该选项会删除所有第三方应用程序。我无法猜测哪个应用程序可能与HID设备发生冲突。

仅为了您的记录,我可以使用WPF Win32应用程序打开此HID设备的句柄,但在Universal应用程序中我不能!

新更新7/11/2018

使用WinDbg完成一些调试任务后,我们意识到我们的UWP访问失败是因为此分支上有一些Upperfilters:[Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Class]。其中一些是由卡巴斯基反病毒制造和控制的。

寻找内核/用户驱动程序的哪些/为什么会对仅使用UWP Store应用程序访问HID设备带来此限制?

1 个答案:

答案 0 :(得分:0)

来自MSDN文件:

  

第一次由商店应用程序调用此方法时,应该从UI线程调用它以显示同意提示。在用户授予同意后,可以从任何应用程序线程调用该方法。

所以,您可以在Dispatcher.RunAsync中调用此方法,如下所示:

await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,()=> {
            currentDevice = await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
                           FileAccessMode.ReadWrite);
        });