与多个应用程序共享 HidDevice

Share HidDevice with multiple applications

当我使用 api 创建新设备时 var device = await HidDevice.FromIdAsync(deviceId, FileAccessMode.ReadWrite); 在它被处置之前,没有其他应用程序可以连接到这个隐藏设备。 传递 FileAccessMode.Read 没有帮助(除了在我尝试写入设备时抛​​出异常)。

这可以使用代码轻松测试:

var device = await HidDevice.FromIdAsync(deviceId, FileAccessMode.ReadWrite);
var device2 = await HidDevice.FromIdAsync(deviceId, FileAccessMode.ReadWrite);

设备2将为空,因为它已经被系统锁定了。

有没有办法在多个应用之间共享HidDevice

看来你是对的,HidDevice API 在你的情况下执行独占访问。 根据 this page Windows.Devices.HumanInterfaceDevice 打开设备句柄作为 共享读取 独占写入 .

Windows.Devices.Custom.CustomDevice.FromIdAsync(String, DeviceAccessMode, DeviceSharingMode)DeviceSharingMode 参数。但我想它不能被转换成 HidDevice.

HidDevice.FromIdAsync(String, FileAccessMode)FileAccessMode.Read 结合使用。

文档指出,该设备将是只读的,但仍然可以写入设备,并可以与其他应用共享。