共用方式為


IAudioEffectsManager::GetAudioEffects 方法 (audioclient.h)

取得相關聯音訊數據流的音訊效果目前清單。

語法

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

參數

effects

接收代表目前音訊效果清單之 AUDIO_EFFECT 結構的陣列指標。

numEffects

接收效果中傳回的AUDIO_EFFECT結構數目。

傳回值

傳回 HRESULT,包括但不限於下列專案。

描述
S_OK Success
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