int CHMixerManager::Set_WaveInConnectionLevel(UINT rMixerID, DWORD rLineIndex, DWORD *rLevelPercent, BOOL *rSelected)
{
// open mixer by id
HMIXER mixer = NULL;
HRESULT hr = ::mixerOpen(
&mixer,
rMixerID,
NULL,
NULL,
MIXER_OBJECTF_MIXER);
if (FAILED(hr))
return ERR_BASE_MIM_FailedToOpenMixer;
// get line id of destination line
MIXERLINE lineinfo_Dest;
::ZeroMemory(&lineinfo_Dest, sizeof(MIXERLINE));
lineinfo_Dest.cbStruct = sizeof(MIXERLINE);
lineinfo_Dest.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
hr = ::mixerGetLineInfo(
(HMIXEROBJ)mixer,
&lineinfo_Dest,
MIXER_OBJECTF_HMIXER |
MIXER_GETLINEINFOF_COMPONENTTYPE);
// get id of specified connector
MIXERLINE lineinfo_Connector;
::ZeroMemory(&lineinfo_Connector, sizeof(MIXERLINE));