There is a big difference between Waveoutgetnumdevs and Mixergetnumdevs. Or an example to see the phenomenon of my machine has three sound cards, respectively: 0--serial audio Device 1--usb audio Play 2--vinyl AC ' EG1: #define My_aud Io_name "Serial Audio Device" int Getwaveoutid () {
int ndevnum = Mixergetnumdevs (); The difference is right here. Ndevnum is 2
Can't get USB audio play this virtual sound card
int _twaveoutid =-1;
for (int i=0;i<ndevnum;i++)
{
Mixercaps Stmixercaps;
char * psdest = NULL;
memset (&stmixercaps, 0, sizeof (stmixercaps));
Mixergetdevcaps (i, &stmixercaps, sizeof (stmixercaps));
Psdest = Strstr (Stmixercaps.szpname, my_audio_name);
AfxMessageBox (Stmixercaps.szpname);
if (psdest!=null)
{
_twaveoutid=i;
}
}
return _twaveoutid; }/////////////////////////////////////////////////////////////EG2: #define MY_AUDIO_NAME "Serial AUDIO Device" int Getwaveoutid () {
int ndevnum = Mixergetnumdevs (); The difference is right here. Ndevnum is 3
Can get USB audio play this virtual sound card
int _twaveoutid =-1;
for (int i=0;i<ndevnum;i++)
{
Mixercaps Stmixercaps;
char * psdest = NULL;
memset (&stmixercaps, 0, sizeof (stmixercaps));
Mixergetdevcaps (i, &stmixercaps, sizeof (stmixercaps));
Psdest = Strstr (Stmixercaps.szpname, my_audio_name);
AfxMessageBox (Stmixercaps.szpname);
if (psdest!=null)
{
_twaveoutid=i;
}
}
return _twaveoutid; }/////////////////////////////////////////////////////////////////////// The phenomenon is like this, let's take a look at the introduction of Waveoutgetnumdevs and Mixergetnumdevs Mixergetnumdevs: Get the current number of hybrid devices. Waveoutgetnumdevs: Returns the number of sound cards installed in the system.