在Windows XP中使用C ++获取Master Sound Volume

时间:2014-01-29 05:20:07

标签: c++ audio windows-xp volume

在Windows Vista及更高版本中,可以使用MMDevice Api获取主音量:

CoInitialize(NULL);
IMMDeviceEnumerator *pEnum = NULL;
IMMDevice *pDevice = NULL;
IAudioMeterInformation *pMeter = NULL;
float peak;

HRESULT hr;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),     
                      NULL,
                      CLSCTX_INPROC_SERVER,
                      __uuidof(IMMDeviceEnumerator),
                      (void**)&pEnum);

hr = pEnum -> GetDefaultAudioEndpoint(eRender, eConsole, &pDevice);

pDevice -> Activate(__uuidof(IAudioMeterInformation), 
                    CLSCTX_ALL,
                    NULL,
                    (void**)&pMeter);

pMeter -> GetPeakValue(&peak); // I need this value

但是如何在Windows XP上获取此信息?

1 个答案:

答案 0 :(得分:1)

来自MSDN,Peak Meters

  

如果音频端点设备在硬件中实现峰值仪表,则IAudioMeterInformation接口使用硬件峰值仪表。否则,接口在软件中实现峰值仪表。

在Vista之前,设备或KMixer(WASAPI的前身用于内部音频混合)没有硬件峰值计量。没有软件回退实现来提供计量数据。所以你只是没有数据,你无法获得它。

如果您有要发送到播放的数据,则可能需要对此数据Feed实施软件计量。