ソフトウェア音量制御のサポート
Windows Vista 以降では、関連する物理ボリューム コントロールを備えたアンプを含まないオーディオ ハードウェアに対してソフトウェア ボリューム サポートが提供されます。
次の図は、Windows ソフトウェア ボリューム サポートを簡略化して示しています。
この図は、2 つの別個のオーディオ データ パスを示しています。 1 つはアンプが存在する場合、もう 1 つは Windows APO ソフトウェアのボリューム コントロールが使用されている場合です。 アンプが存在する場合、ドライバーは KSPROPERTY_AUDIO_VOLUMELEVEL をアドバタイズします。 オーディオ ドライバーが KSPROPERTY_AUDIO_VOLUMELEVEL をサポートすることを示していない場合、Windows オーディオ エンジンはソフトウェア ボリューム コントロール APO を作成します。
一般的な PC では、通常、コンピュータ内に 1 セットのオーディオ コンポーネントが存在するため、これらのデータ パスは 1 つだけ存在します。 ここでは、説明のために 2 つのパスを示しています。
IAudioEndpointVolume インターフェイスは、オーディオ エンドポイント デバイスとの間のオーディオ ストリームのボリューム コントロールを表します。
Bluetooth または USB オーディオが存在する場合、それらのボリューム コントロールは個別に制御されます。
アンプが存在するデータパス
アンプと物理ボリューム コントロールが存在する構成でクライアント アプリケーションが IAudioEndpointVolume インターフェイスを呼び出すと、オーディオ ドライバーはトポロジ フィルターで KSNODETYPE_VOLUME ノードを公開します。 Volume ノードの存在により、IAudioEndpointVolume はオーディオ信号の音量レベルがハードウェアによって変更されることを認識します。
アンプが存在しないデータ パス
アンプが存在しない場合、IAudioEndpointVolume はオーディオ エンジンと連携して、Windows ソフトウェア ボリューム サポート APO を初期化します。
モデル化される物理ボリューム コントロールがないため、KSNODETYPE_VOLUME ノードはトポロジ フィルターで公開されません。 ボリュームの減衰とゲインは、APO ソフトウェアのボリューム サポート コンポーネントによって実行されます。
Windows のさまざまなバージョンの音量範囲とデフォルトの音量レベルについては、デフォルトのオーディオ音量設定を参照してください。