Windows Vista Ultimate上で、VisualStudio2005(VisualC++ 2005)とWindowsSDKを使用して、サウンドミキサーを制御するアプリを作っています。
例として、下記の構成のサウンドカードを想定するとします。
再生
スピーカー(Realtek High Definition Audio)
*Realtek HD Audio output(メインボリューム)
+マイク
+ライン入力
録音
*Front Mic
*ライン入力
IMMDeviceEnumeratorから、再生側は、RenderのIMMDeviceCollection、録音側は、CaptureのIMMDeviceCollection、を取得してIMMDeviceCollection->IMMDevice->IAudioEndpointVolumeの順でインターフェイスを取得して、IAudioEndpointVolumeを通してコントロール(ボリューム変更やミュートチェックなど)を行っています。
しかし、上記の*を付けたものに関しては、IMMDeviceEnumeratorのEnumAudioEndpoints命令でデバイスを列挙させてIMMDeviceCollectionインターフェイスを取得できますが、+を付けたものについては、同様にデバイスを列挙させても検出ができないので、IMMDeviceCollectionインターフェイスを取得することができません。
+を付けたものに対して、ボリューム変更やミュートチェックを行いたいのですが、どうすれば良いでしょうか?