You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何注册WinRT自定义音频效果类?修复hresult_class_not_registered错误

解决WinRT自定义音频效果类未注册异常(80040154)

核心问题原因

你用「Custom Control (WinUI 3)」模板创建的类是针对UI控件的,默认继承UI控件接口,并未实现音频效果所需的WinRT接口,也没有配置音频效果的系统注册信息,导致系统无法识别该类为音频效果组件。

具体修复步骤

1. 修正IDL接口定义

将MyAudioEffect.idl中的UI控件继承改为音频效果接口,实现Windows.Media.Effects.IAudioEffect:

namespace MRE_ClassNotRegistered
{
    [default_interface]
    runtimeclass MyAudioEffect : Windows.Media.Effects.IAudioEffect
    {
        MyAudioEffect();
    }
}

2. 实现音频效果接口方法

在MyAudioEffect.cpp中补全IAudioEffect的所有必需方法(需符合音频逻辑,不能留空实现):

#include "pch.h"
#include "MyAudioEffect.h"
#include "MyAudioEffect.g.cpp"

namespace winrt::MRE_ClassNotRegistered::implementation
{
    MyAudioEffect::MyAudioEffect()
    {
        // 初始化逻辑
    }

    Windows::Media::Effects::AudioEffectState MyAudioEffect::State()
    {
        return Windows::Media::Effects::AudioEffectState::Off;
    }

    void MyAudioEffect::SetState(Windows::Media::Effects::AudioEffectState const& value)
    {
        // 处理状态切换逻辑(开启/关闭效果)
    }
}

3. 在应用清单中声明音频效果扩展

打开Package.appxmanifest,添加音频效果的扩展声明,让系统识别你的组件:

<Package ...>
  <Applications>
    <Application ...>
      <!-- 其他现有内容 -->
      <Extensions>
        <Extension Category="windows.audioEffect">
          <AudioEffect>
            <DeviceCapability Name="microphone" />
            <DeviceCapability Name="speaker" />
            <AudioEffectType>custom</AudioEffectType>
            <AudioEffectId>MRE_ClassNotRegistered.MyAudioEffect</AudioEffectId>
          </AudioEffect>
        </Extension>
      </Extensions>
    </Application>
  </Applications>
</Package>

4. 调整项目结构(可选但推荐)

将音频效果组件移到单独的WinRT Component项目中,而非WinUI3应用项目内:

  • 新建WinRT Component项目,迁移MyAudioEffect的idl、h、cpp文件
  • 在WinUI3主应用项目中引用该组件项目
  • 确保组件被正确打包到应用包中

5. 验证类注册

  • 打包应用:重新生成解决方案并部署,系统会自动注册WinRT类
  • 未打包桌面应用:以管理员身份执行命令手动注册组件DLL:
    regsvr32.exe "你的组件DLL路径"
    

关键注意事项

  • 自定义音频效果必须实现IAudioEffect接口,不能继承UI控件类
  • 应用清单的AudioEffectId必须和类全名完全一致
  • 未打包桌面应用需手动注册组件,打包应用由系统自动处理

内容的提问来源于stack exchange,提问作者Tom Huntington

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:53:20