Share via


IPerChannelDbLevel::SetLevelAllChannels メソッド (devicetopology.h)

SetLevelAllChannels メソッドは、オーディオ ストリーム内のすべてのチャネルのボリューム レベルをデシベル単位で設定します。

構文

HRESULT SetLevelAllChannels(
  [in] float [] aLevelsDB,
  [in] ULONG    cChannels,
  [in] LPCGUID  pguidEventContext
);

パラメーター

[in] aLevelsDB

ボリューム レベルの配列へのポインター。 このパラメーターは、呼び出し元によって割り当てられた float 配列を指します。この配列では、メソッドはすべてのチャネルに対して新しいボリューム レベルをデシベル単位で書き込みます。 メソッドは、特定のチャネルのレベルを、チャネル番号と一致するインデックスを持つ配列要素に書き込みます。 オーディオ ストリームに n 個のチャネルが含まれている場合、チャネルには 0 ~ n – 1 の番号が付きます。 ストリーム内のチャネルの数を取得するには、 IPerChannelDbLevel::GetChannelCount メソッドを呼び出します。

[in] cChannels

aLevelsDB 配列内の要素の数。 このパラメーターがオーディオ ストリーム内のチャネル数と一致しない場合、メソッドは aLevelsDB 配列を変更せずに失敗します。

[in] pguidEventContext

IControlChangeNotify::OnNotify メソッドのコンテキスト値。 このパラメーターは、イベント コンテキスト GUID を指します。 SetLevelAllChannels 呼び出しによってレベル コントロールの状態が変更されると、そのコントロールに IControlChangeNotify インターフェイスを登録しているすべてのクライアントが通知を受け取ります。 OnNotify メソッドの実装では、クライアントはイベント コンテキスト GUID を調べて、その GUID または別のクライアントがコントロール変更イベントのソースであるかどうかを検出できます。 呼び出し元がこのパラメーターに NULL ポインターを指定した場合、クライアントの通知メソッドは NULL コンテキスト ポインターを受け取ります。

戻り値

メソッドが成功した場合は、S_OK を返します。 失敗した場合、次の表に示す値が含まれますが、これに限定されません。

リターン コード 説明
E_INVALIDARG
パラメーター cChannels はチャネルの数と等しくありません。
E_POINTER
ポインター aLevelsDBNULL です
E_OUTOFMEMORY
メモリが不足しています。

解説

指定されたレベル値がチャネルの IPerChannelDbLevel::GetLevelRange メソッドによって報告される範囲を超えている場合、 SetLevelAllChannels 呼び出しはサポートされている範囲に値をクランプし、正常に完了します。 IPerChannelDbLevel::GetLevel メソッドの後続の呼び出しは、そのチャネルに使用される実際の値を取得します。

要件

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

関連項目

IPerChannelDbLevel インターフェイス

IPerChannelDbLevel::GetChannelCount

IPerChannelDbLevel::GetLevel

IPerChannelDbLevel::GetLevelRange