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 |