我的程序中,设置音量,会改变Volume Mixer中的波形音量。经过查找,发现问题在于,用了不同的Audio Render,系统提供了两个Audio Render,CLSID不同:
CLSID_DSoundRender
CLSID_AudioRender
使用第一个Filter不会影响系统的音量设置,而第二个会改变波形音量!再看帮助文档,是这样叙述的:对于枚举出来的每个音频播放设备,都有两个Filter,它们显示的名称是不同的,其中一个名称前加"DirectSound:",另一个显示原名称。
另一点很奇怪的是,这两个Filter都继承了IAMDirectSound接口,但没有实现接口中的函数。就算没有实现函数,但在程序中连这个接口也得不到,本来直接得到这个接口就好做了,看来只有另外想办法!