IAudioEffectsManager::GetAudioEffects 方法 (audioclient.h)

获取关联音频流的音频效果的当前列表。

语法

HRESULT GetAudioEffects(
  AUDIO_EFFECT **effects,
  UINT32       *numEffects
);

参数

effects

接收指向表示当前音频效果列表 的AUDIO_EFFECT 结构的数组的指针。

numEffects

接收效果中返回的AUDIO_EFFECT结构数。

返回值

返回 HRESULT,包括但不限于以下内容。

说明
S_OK 成功
AUDCLNT_E_DEVICE_INVALIDATED 关联的音频流已被销毁。

注解

调用方负责使用 CoTaskMemFree 释放数组。

注册 IAudioEffectsChangedNotificationClient ,以在音频效果列表更改时接收通知。

示例

以下示例演示 IAudioEffectsManager.GetAudioEffects 以检测指定音频流上是否存在 AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION 效果。

HRESULT IsPlatformDeepNoiseSuppressionPresent(_In_ IAudioClient *client, _Out_ bool *isPresent)
{
    *isPresent = false;
    wil::com_ptr_nothrow<IAudioEffectsManager> audioEffectsManager;
    RETURN_IF_FAILED(client->GetService(IID_PPV_ARGS(&audioEffectsManager)));
    wil::unique_cotaskmem_array_ptr<AUDIO_EFFECT> effects;
    UINT32 numEffects;
    RETURN_IF_FAILED(audioEffectsManager->GetAudioEffects(&effects, &numEffects));

    for (UINT32 i = 0; i < numEffects; i++)
    {
        // Check if noise suppression is part of the current effects
        if (effects[i].id == AUDIO_EFFECT_TYPE_DEEP_NOISE_SUPPRESSION)
        {
            *isPresent = true;
            return S_OK;
        }
    }

    return S_OK;
}

要求

要求
最低受支持的客户端 Windows 内部版本 22000
标头 audioclient.h

另请参阅

AUDIO_EFFECTIAudioEffectsChangedNotificationClient