DirectInput 是否能够判断杆上有哪些轴?

Is DirectInput capable of telling WHICH axes are present on a stick?

我目前正在编写 .Net DirectInput wrapper DLL 以允许基于事件报告来自其他语言的摇杆输入(我正在使用 AutoHotkey)。
我目前使用 SharpDX 读取棒数据,但 SharpDX 似乎只报告 多少 个轴一个棒报告,而不是 哪个 个轴一个棒报告。
例如,一根棍子完全有可能有 7 个轴,但没有 X 轴(您可以通过安装 vJoy 并配置它有哪些轴来看到这一点 - 在 vJoy 配置实用程序中,取消勾选 X 轴。注意 joy.cpl X 轴消失了)。
通过 SharpDX 读取棒帽(使用例如 SharpDX.DirectInput.Joystick.Capabilities.AxeCount),似乎无法判断缺少的轴是 X。
底层 DirectInput API 是否能够表示此信息,或者我是否必须转到 RawInput 之类的内容才能获取此信息?

所以我自己解决了这个问题。

使用 SharpDX,您可以使用 Joystick.GetObjectPropertiesByName("X"),其中 "X" 是轴的名称。您可以在 JoystickOffset 上调用 ToString() 以获取轴的名称。
如果您在 try 块中执行此操作,那么如果它击中了锁扣,则该轴不存在于该杆上。