我需要一些帮助才能理解USB游戏控制器(HID设备)

问题描述 投票:0回答:1

我为这个奇怪的标题道歉,但这是我现在能想到的最好的。所以我有一个项目,我正在构建一个充当游戏控制器的HID设备。我想模拟控制器,使其显示为Windows PC的Xbox 360控制器。有一个很好的API,称为游戏的XInput API,以便他们可以使用360控制器。我想利用这一点。

我目前正在研究如何将微控制器编码为PC的360控制器。我确实有一些问题,我希望有更多专业知识的人可以帮助我。

1)我正在研究HID标准。我想知道,是否有一个为游戏控制器指定的HID标准的单独子类,我可以使用它与XInput API兼容?或者至少,是否有HID标准中的游戏控制器?

2)我在这里找到了有关如何使用XInput API的文档:https://docs.microsoft.com/en-us/windows/desktop/xinput/getting-started-with-xinput

现在,我想知道,是否有任何文档指定如何使HID设备符合XInput API或我将进行一些逆向工程,我使用API​​来指导我如何编写微控制器?

3)最后,是否有关于PC用于与Xbox One控制器通信的API的文档?或者它仍然是XInput API?或者是Gamepad类(https://docs.microsoft.com/en-us/uwp/api/windows.gaming.input.gamepad

感谢您抽出宝贵时间阅读本文,我期待您的回复!

usb hid xbox360 xbox-one xinput
1个回答
1
投票

我对此有一些信息:

Xbox 360控制器使用专有协议通过USB与PC \ console通信。它的驱动程序是在Windows附带的XUSB22.sys中实现的(之前是单独的驱动程序包)。在引擎盖下,USB总线上有所谓的Krypton Packets(codename of wired controller)和无线控制器的Argon Packets(无线控制器RF代号)。驱动程序生成XInput接口和USB HID接口(用于DirectInput用法)。

Xbox One控制器使用称为GIP(游戏输入协议)的专有协议。驱动程序实现在xboxgip.sys中。还提供XInput接口和USB HID接口但有限(触发器下的电机不工作)。无线控制器使用带有封装GIP的Wifi数据包。

Windows.Gaming.Input - 是新的WinRT API,除了XInput API之外,还在内部使用这两个驱动程序(通过q​​azxswpoi)。它的原生接口,用于PC和Xbox ONE UWP应用\游戏的Xbox ONE控制器。 XInput缺少Windows.Gaming.Input的一些功能:

您可以尝试通过IDA PRO调试,USB但嗅探等方式对这些协议进行反向工程.PDB符号可从Microsoft Public PDB服务获得(IDA将自动下载):XusbGameControllerProvider and GipGameControllerProvider xusb.sys

xboxgip.sys

© www.soinside.com 2019 - 2024. All rights reserved.