以下代码在某些 Windows 10 系统中返回 null
currentDevice = await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
FileAccessMode.ReadWrite);
我发现这个问题可以通过重新安装 Windows 10/或使用 Windows 10 中的“新鲜”选项来解决,该选项删除所有第三方应用程序。我无法猜测哪个应用程序可能与 HID 设备发生冲突。
仅供您记录,我可以使用 WPF Win32 应用程序打开此 HID 设备的句柄,但在通用应用程序中我不能!
新更新 7/11/2018
使用 WinDbg 执行一些调试任务后,我们意识到 UWP 访问失败,因为此分支上有一些可用的 Upperfilter:[Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class]。其中一些是由卡巴斯基反病毒软件制作和控制的。
想了解哪个/为什么内核/用户驱动程序对仅 UWP Store 应用程序访问 HID 设备带来了此限制?
来自MSDN文档:
商店应用程序第一次调用此方法时,应从 UI 线程调用它,以显示同意提示。用户同意后,可以从任何应用程序线程调用该方法。
因此,您可以在
Dispatcher.RunAsync
中调用此方法,如下所示:
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,()=> {
currentDevice = await HidDevice.FromIdAsync(devices.ElementAt(0).Id,
FileAccessMode.ReadWrite);
});
你找到这个问题的根源了吗?我也有同样的问题。另外,我无法获得对 hiddevice 的读写访问权限,只能进行读取访问。看来要使 UsbDevice 工作,USB 设备必须使用 WinUSB 驱动程序。