gpt4 book ai didi

windows - 更正 Windows API 以查找 CurrentControlSet\Control\MediaProperties?

转载 作者:可可西里 更新时间:2023-11-01 14:36:58 25 4
gpt4 key购买 nike

我希望支持自定义操纵杆设备,但由于项目要求,我不能再使用 DirectInput API。我已经切换到使用“经典”Windows 多媒体 API(例如 joyGetDevCaps 和系列),但只有一个异常(exception)。

DirectInput DeviceInstance 有两个字段,InstanceNameProductName,它们返回设备的正确“自定义”名称。

相应的 joyGetDevCaps 产品名称字段 szPname 返回一个通用的“Microsoft PC 游戏杆驱动程序”。

在安装了设备的系统上搜索注册表时,我发现该节点中有一个 REG_SZ OEMName 条目,其中包含我想要的字符串:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_07C0&PID_1128

JOYCAPS 中返回了两个字段,wMid(制造商 ID)和 wPid(产品 ID),它们映射到键名中的两个十六进制值:wMid = 0x07c0,wPid = 0x1128。

此外,我可以在 GUID_DEVINTERFACE_HID 上使用 SetupDiEnumDeviceInfo API 并找到匹配的 Controller (尽管这一步可能不是必需的):

HID\VID_07C0&PID_1128&REV_1032,符合 HID 标准的游戏 Controller

问题:是否有用于枚举我应该使用的 MediaProperties\PrivateProperties 的 API,或者使用此信息并直接查询注册表是否“安全”?如果有 API,请回答引用和/或示例代码!我找不到任何相关内容。

最佳答案

您应该使用 szRegName 值来获取以下键:(在这种情况下,szRegName 是“DINPUT.DLL”):

HKCU\System\CurrentControlSet\Control\MediaResources\Joystick\DINPUT.DLL\CurrentJoystickSettings

它包含诸如“Joystick1OEMName”之类的值,其中将包含诸如“VID_07C0&PID_1128”之类的字符串,可用于在 PrivateProperties 下查找适当的 key 。

一些示例代码可以在这里找到: https://github.com/google/liquidfun/blob/master/freeglut/src/mswin/fg_joystick_mswin.c

关于windows - 更正 Windows API 以查找 CurrentControlSet\Control\MediaProperties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10356284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com