与多个应用程序共享 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
结合使用。
文档指出,该设备将是只读的,但仍然可以写入设备,并可以与其他应用共享。
当我使用 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
结合使用。
文档指出,该设备将是只读的,但仍然可以写入设备,并可以与其他应用共享。