如何在Windows joy.cpl中自定义BLE HOGP游戏手柄的设备名称?
解决HOGP游戏手柄在Windows 10 joy.cpl中显示自定义名称的问题
我之前也踩过这个坑——Windows对蓝牙HOGP设备的名称识别逻辑和USB HID设备不太一样,光靠设备信息服务(DIS)的几个特征确实没法搞定,得从HID服务本身和系统配置两方面入手。给你几个可行的方案:
1. 优先配置HID服务的字符串描述符
Windows对于HOGP设备,会优先读取HID服务(0x1812)下的字符串描述符,而不是只依赖DIS的设备名称特征。你需要:
- 在HID的字符串描述符集合中,把索引为1的“产品名称”设置为你的自定义名称(比如“我的专属手柄”)。
- 确保HID报告映射特征(0x2A4B)对应的报告描述符格式完全合规——如果报告描述符解析失败,系统会自动 fallback 到默认的“8轴32按键设备”名称。
2. 确认DIS特征的配置权限
你已经配置了DIS的设备名称(0x2A00),但还要检查:
- 这个特征的属性设置为可读,保证Windows设备能正常读取到该特征的值。
- 尝试删除设备后重新配对,或者在设备管理器中右键更新驱动,清除Windows的设备名称缓存——有时候系统会缓存旧的名称,导致新设置不生效。
3. 用自定义INF文件强制指定名称
如果上面的方法都没效果,你可以针对你的唯一VID/PID创建一个INF文件,强制Windows显示自定义名称:
[Version] Signature="$CHICAGO$" Class=HIDClass ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da} Provider=%ManufacturerName% DriverVer=06/21/2024,1.0.0.0 [Manufacturer] %ManufacturerName%=DeviceList,NTamd64 [DeviceList.NTamd64] %DeviceName%=HID_Device, USB\VID_XXXX&PID_YYYY // 替换成你的VID/PID [Strings] ManufacturerName="你的厂商名称" DeviceName="自定义名称" // 这里填你想要显示的名称
右键安装这个INF文件后,Windows就会用这个名称来识别你的设备,完全覆盖默认的显示名称。
4. 检查HID服务的基础配置
最后确认HID信息特征(0x2A4A)的配置:
- 协议类型设置为报告协议(0x01),这是HOGP设备的标准配置。
- 报告描述符的长度和实际内容严格匹配,避免Windows解析失败。
内容的提问来源于stack exchange,提问作者Roman Stepanov
相关产品推荐
相关产品推荐

