IAudioSessionEvents::OnChannelVolumeChanged メソッド (audiopolicy.h)

OnChannelVolumeChanged メソッドは、セッション サブミックス内のオーディオ チャネルのボリューム レベルが変更されたことをクライアントに通知します。

構文

HRESULT OnChannelVolumeChanged(
  [in] DWORD    ChannelCount,
  [in] float [] NewChannelVolumeArray,
  [in] DWORD    ChangedChannel,
  [in] LPCGUID  EventContext
);

パラメーター

[in] ChannelCount

チャネル数。 このパラメーターは、セッション サブミックス内のオーディオ チャネルの数を指定します。

[in] NewChannelVolumeArray

ボリューム レベルの配列へのポインター。 各要素は、特定のチャネルのボリューム レベルを指定する float 型の値です。 各ボリューム レベルは 0.0 から 1.0 の範囲の値です。0.0 は無音で、1.0 は完全ボリュームです (減衰なし)。 配列内の要素の数は、 ChannelCount パラメーターによって指定されます。 オーディオ ストリームに n 個のチャネルが含まれている場合、チャネルには 0 ~ n – 1 の番号が付きます。 インデックスがチャネル番号と一致する配列要素には、そのチャネルのボリューム レベルが含まれます。 配列は、呼び出しの期間中のみ有効なままであると仮定します。

[in] ChangedChannel

ボリューム レベルが変更されたチャネルの番号。 この値は 、NewChannelVolumeArray 配列のインデックスとして使用します。 セッション サブミックスに n 個のチャネルが含まれている場合、チャネルには 0 から n – 1 の番号が付きます。 複数のチャネルが変更された可能性がある場合 (たとえば、 IChannelAudioVolume::SetAllVolumes メソッドの呼び出しの結果)、 ChangedChannel の値は (DWORD)(–1) です。

[in] EventContext

イベント コンテキスト値。 これは、呼び出し元がチャネルのボリューム レベルの変更を開始した呼び出しの IChannelAudioVolume::SetChannelVolume または IChannelAudioVolume::SetAllVolumes メソッドに渡した値と同じです。 詳細については、「解説」を参照してください。

戻り値

メソッドが成功した場合は、S_OK を返します。 失敗した場合はエラー コードを返します。

解説

セッション マネージャーは、 IChannelAudioVolume::SetChannelVolume メソッドまたは IChannelAudioVolume::SetAllVolumes メソッドの呼び出しによって、セッション サブミックス内の 1 つ以上のチャネルのボリューム レベルが正常に更新されるたびに、このメソッドを呼び出します。 OnChannelVolumeChanged 呼び出しは、新しいチャネル ボリューム レベルまたはレベルの値が以前のチャネル ボリューム レベルまたはレベルと異なるかどうかに関係なく発生します。

EventContext パラメーターは、クライアントが開始したチャネルボリュームの変更と、他のクライアントが開始したチャネルボリュームの変更を区別するための手段を提供します。 IChannelAudioVolume::SetChannelVolume メソッドまたは IChannelAudioVolume::SetAllVolumes メソッドを呼び出すと、クライアントは、OnChannelVolumeChanged メソッドの実装で認識できる EventContext パラメーター値を渡します。

IAudioSessionEvents インターフェイスで メソッドを実装するコード例については、「オーディオ セッション イベント」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー audiopolicy.h

こちらもご覧ください

IAudioSessionEvents インターフェイス

IChannelAudioVolume::SetAllVolumes

IChannelAudioVolume::SetChannelVolume