次の方法で共有


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
Header audioclient.h

こちらもご覧ください

IAudioEffectsChangedNotificationClient をAUDIO_EFFECTする