You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用HidDevice.FromIdAsync打开HID设备无报错闪退如何解决?

HID设备调用FromIdAsync直接退出无异常的解决方法
  • UWP应用必须补充设备权限声明
    打开项目的Package.appxmanifest文件,切换到「功能」选项卡勾选「人机接口设备」,或者直接在manifest的Capabilities节点添加如下配置,替换为你实际的设备参数:
    <Capabilities>
      <DeviceCapability Name="humaninterfacedevice">
        <Device Id="vidpid:XXXX XXXX">
          <Function Type="usage:XXXX XXXX"/>
        </Device>
      </DeviceCapability>
    </Capabilities>
    
    其中vidpid后面的两个值分别对应你的vendorId、productId,usage后面的两个值对应usagePage、usageId,均为16进制格式。
  • 控制台应用适配WinRT API权限
    传统.NET控制台应用直接调用UWP的HidDevice API默认没有设备访问权限,两种方案可选:
    1. 将控制台项目打包为MSIX包,同UWP一样添加上述设备权限声明
    2. 改用第三方HID操作库实现设备读写,无需适配UWP权限规则
  • 检查设备访问状态
    • 确认没有其他程序已经独占占用目标HID设备,关闭设备厂商配套工具、HID调试工具后重试
    • 部分HID设备不支持同时读写权限,可先尝试将FileAccessMode.ReadWrite替换为FileAccessMode.Read或FileAccessMode.Write验证是否能正常打开
  • 补充异常捕获逻辑
    异步方法的异常需要在await调用处捕获,将代码包裹为如下结构即可拿到具体错误信息:
    try
    {
        HidDevice device = await HidDevice.FromIdAsync(devices.ElementAt(0).Id, FileAccessMode.ReadWrite);
        if(device == null)
        {
            // 权限不足导致打开失败
        }
    }
    catch(Exception ex)
    {
        // 输出ex.Message查看具体错误
    }
    

内容的提问来源于stack exchange,提问作者Raluca Chirita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:15:07