与多个应用程序共享HidDevice

问题描述

当我使用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在您的情况下执行独占访问。 根据{{​​3}} Windows.Devices.HumanInterfaceDevice,打开设备句柄作为共享读取专有写入

this page带有 DeviceSharingMode 参数。但是我想它不能转换为HidDevice

,

imports: [ // ConfigModule.forRoot({ isGlobal: true }),or you can import it inside TypeOrmModule.forRootAsync({ inject: [ConfigService],imports: [ConfigModule],useFactory: async (configService: ConfigService) => ({ type: 'mysql',host: this.configService.get<string>('DATABASE_HOST'),... }),}),],HidDevice.FromIdAsync(String,FileAccessMode) 一起使用。

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