Используя DirectX SDK , вы можете вызвать DirectSoundCaptureEnumerate, который вызовет вашу функцию DSEnumCallback для каждого устройства DirectSoundCapture в системе. Первый параметр, передаваемый вашему DSEnumCallback, представляет собой LPGUID, который является «адресом GUID, идентифицирующим перечисляемое устройство, или NULL для основного устройства».
Если все, что вам нужно сделать, это выяснить, присутствует ли записывающее устройство (я не думаю, что это достаточно хорошо, если вам действительно нужно знать устройство по умолчанию), вы можете использовать waveInGetNumDevs:
#include <tchar.h>
#include <windows.h>
#include "mmsystem.h"
int _tmain( int argc, wchar_t *argv[] )
{
UINT deviceCount = waveInGetNumDevs();
if ( deviceCount > 0 )
{
for ( int i = 0; i < deviceCount; i++ )
{
WAVEINCAPSW waveInCaps;
waveInGetDevCapsW( i, &waveInCaps, sizeof( WAVEINCAPS ) );
// do some stuff with waveInCaps...
}
}
return 0;
}