首页 > 解决方案 > 出现错误:System.Exception:无法获取设备接口详细信息。错误代码:使用 HID.Net 和 USB.Net 时出现 122

问题描述

我有一个使用Hid.Net库的控制台应用程序(.Net Core)项目,最终目标是连接我的 HID 游戏控制器并从中读取数据,但作为理解库的起点,我有编写代码来枚举我想连接的游戏控制器的连接设备。我编写的代码遵循库中的文档。但是当我运行这个项目时,我得到了错误:

System.Exception:无法获取设备接口详细信息。错误代码:122

这是我写的代码:

using System;
using System.Threading.Tasks;
using Device.Net;
using Hid.Net.Windows;
using Usb.Net.Windows;

namespace IOLibrary
{
    class Program
    {
        static void Main(string[] args)
        {
            CheckforDevices();

            Console.ReadLine();
        }

        static async Task CheckforDevices()
        {
            try
            {
                WindowsHidDeviceFactory.Register();
                WindowsUsbDeviceFactory.Register();

                var devices = await DeviceManager.Current.GetConnectedDeviceDefinitions(0x0079, 0x0006);
                foreach(var device in devices)
                {
                    Console.WriteLine(device.DeviceId);
                }

            }
            catch(Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

我不明白我做错了什么,因此非常感谢任何解释或见解。

标签: c#usbhidjoystick

解决方案


编辑:这个错误已经被修复并且在当前的 2.3 版本中。但是,如果您认为没有返回设备,则仍然值得克隆 repo 并逐步执行代码。如果在尝试收集有关设备的信息的过程中出现问题,设备将不会返回

上一个答案: 这是一个已知的错误。有时,获取隐藏详细信息的调用不起作用,因此其余的将失败。我实际上已在此提交 664978f5084a6113a2b9e9a0371d5c7d40f30731 中修复了此问题,但我相信修复仅在开发分支中。如果您签出该修订版,则代码不应崩溃。我会尽快发布一个新的 NuGet 版本来解决这个问题。但是,您应该明白,如果 Hid.Net 无法获取设备的详细信息,则不会认为它已连接。


推荐阅读