日期:2026-09-16 | 机型:微星主板 + Realtek ALC887(SUBSYS_1462CB24)
症状
- 插上耳机没声音,后来发现所有输出都没声音(扬声器、耳机均无声)
- 设备管理器里声卡状态"正常",音量 100%、无静音,驱动版本很新(6.0.9977.1 / 2026-04-14)
- 播放测试音时用 IAudioMeterInformation 采样,端点电平恒为 0 ------ 音频根本没有渲染出来
真正的根因
驱动升级后,音效组件的注册表指向没有同步刷新,导致音频引擎每次建流都去加载一个已经不存在的模块。
| 位置 | 内容 |
|---|---|
当前安装的音效包 oem83.inf(RealtekAPO.inf v11.0.6000.1062) |
注册 {A296D363...} {A29EB043...} {7121B512...} → RltkAPOU64.dll (System32 中存在,7.5 MB) |
注册表 HKLM\SOFTWARE\Classes\CLSID\{...}\InprocServer32 的实际值 |
却写着旧文件名 RltkAPO64.dll (System32 中不存在) |
于是 WASAPI 抛出决定性的错误码:
GetMixFormat hr = 0x8007007E (ERROR_MOD_NOT_FOUND)
音频引擎加载 APO 失败 → 无法创建音频流 → 整机静音。
此外,播放端点 {57361567-...} 的 FxProperties 里还残留着已卸载的 Nahimic 组件引用
({670173E1} / {670173E2},均未注册),属于同一次驱动更迭留下的历史残渣。
结论:和耳机、插孔、音量、Nahimic 是否运行都无关。
修复动作
| 步骤 | 操作 | 结果 |
|---|---|---|
| 1 | 把三个 CLSID 的 InProcServer32 改指到真实存在的 C:\Windows\System32\RltkAPOU64.dll |
✅ 3/3 成功 |
| 2 | pnputil /remove-device 卸载 Realtek 设备节点,再 /scan-devices 让端点按当前驱动重建(自动清掉 Nahimic 等陈旧引用) |
✅ 设备正常回来 |
| 3 | 重启 Audiosrv / AudioEndpointBuilder | ✅ |
基础 Realtek 驱动未改动,音效功能保留。
验证结果
GetMixFormat hr = 0x00000000 ← 原为 0x8007007E
Initialize / Start = 0x00000000
TOTAL_FRAMES_WRITTEN = 101760 ← 音频真实写入声卡缓冲区
播放三音测试音 + 采样端点电平:
PEAK_VALUE = 0.349976
RESULT = SOUND_RENDERED