c# - 如何将 DirectInput (sharpDX) 设备映射到其相应的 HID (C#)

标签 c# usb hid sharpdx gamepad-api

我需要一种方法来找出 SharpDX.DirectInput DeviceInstance 的当前 HID。

我在 DirectInput 方面拥有的是:

ProductId -> 00060079-0000-0000-0000-504944564944 (always the same)
InstanceId -> 8e3d89c0-6436-11e9-8004-444553540000 (dynamic / changes every time PC starts)

在 HID 端:

VendorID=0x0079
ProductID=0x0006,
Version=263,
DevicePath=\\?\hid#vid_0079&pid_0006#8&1ec29a1c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}

我可以看到 HIDvendorId 和 ProductId 用于构建 DirectInput ProductId。问题是我有多个 Controller 连接到相同的 VendorId 和 ProductId(它们是同一品牌)

有办法做到这一点吗?了解 DirectInput InstanceId 的 HID devicePath?

上下文:

我正在编写一个软件来自动配置我的自定义街机的许多模拟器上的许多 Controller 。模拟器使用 DirectInput/XInput/DSUClient ( https://github.com/v1993/cemuhook-protocol ) 的组合。因此,对于每个连接的 Controller ,我需要了解所有 Controller 信息,以便能够在每个模拟器上正确配置每个 Controller 。

目前,作为一个(非常糟糕的)解决方法,我正在监听与 HID 分离的 DirectInput 的输入,当读取发生时,我知道 HID 设备是 DirectInput 设备,因为它们(几乎)同时发生。

我已经尝试过“Win32_PnPEntity”和“ManagementObjectSearcher”,但没有成功

最佳答案

我最终找到了解决方案......

DirectInput directInput = new DirectInput();
foreach (var deviceInstance in directInput.GetDevices())
{
    var joystick = new Joystick(directInput, deviceInstance.InstanceGuid);
    Console.WriteLine(joystick.Properties.InterfacePath)
}

关于c# - 如何将 DirectInput (sharpDX) 设备映射到其相应的 HID (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67059441/

相关文章:

c# - WPF MVVM : Saving Data automatically

python - 在 Linux 中从 USB 设备捕获输入

javascript - 在 Windows 10 中为 Electron 安装 node_usb_detection

linux - 您如何获得隐藏设备的所有权?

c++ - 什么是 HID_REPORT_DESCRIPTOR?

c# - 在 Entity Framework Core 中使用什么 C# 类型来映射 MySql 的 POINT 数据类型?

c# - System.Diagnostics.Stopwatch 不准确吗?

c# - 在运行时解析成员名称

android - 获取所有外部安装的设备(USB、SD 卡)

android - 如何在 Android 上以编程方式配对和连接 HID 蓝牙设备(蓝牙键盘)