[wdmaudiodev] Re: Two identic soundcards installed

  • From: "Markus Bollinger" <bollinger@xxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 3 Oct 2005 15:30:21 +0200

My problem comes from the DirectX examples:
Most applications use sample code from DirectX SDK to enumerate Sound Cards 
(DirectSoundEnumerate) with following callback:

BOOL CALLBACK DSEnumProc(LPGUID lpGUID, 
         LPCTSTR lpszDesc,
         LPCTSTR lpszDrvName, 
         LPVOID lpContext )
{
  HWND hCombo = (HWND)lpContext;
  LPGUID lpTemp = NULL;
 
  if (lpGUID != NULL)  //  NULL only for "Primary Sound Driver".
  {
    if ((lpTemp = (LPGUID)malloc(sizeof(GUID))) == NULL)
    {
        return(TRUE);
    }
    memcpy(lpTemp, lpGUID, sizeof(GUID));
  }
 
  ComboBox_AddString(hCombo, lpszDesc);
  ComboBox_SetItemData(hCombo, 
      ComboBox_FindString(hCombo, 0, lpszDesc),
      lpTemp );
  free(lpTemp);
  return(TRUE);
}

If there are two sound cards with the same friendly name for the Wave device,
they will be enumerated twice with the same name but a different GUID.

But the ComboBox_FindString() will never find the second or third card in the 
ComboBox.

As there are already existing many DirectSound applications, should I consider
- implementing KSPROPERTY_GENERAL_COMPONENTID to give each device a unique name,
- or are there other known solutions ?

- Markus



> -----Message d'origine-----
> De : wdmaudiodev-bounce@xxxxxxxxxxxxx
> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx]De la part de Markus 
> Bollinger
> Envoyé : vendredi 30 septembre 2005 16:12
> À : wdmaudiodev@xxxxxxxxxxxxx
> Objet : [wdmaudiodev] Two identic soundcards installed
> 
> 
> Hello!
> 
> If I have two identic Soundcards installed on my PC (e.g. 
> "Creative Sound Blaster PCI"),
> on MME the second card gets the extension "(2)" to it's 
> friendly device name.
> To select a device, MME based applications, the WaveMapper or 
> SoundVol32 work correctly.
> 
> But in DirectSound the "(2)" is not added.
> 
> When I use WindowsMediaPlayer 10, I cannot select the second card
> When I use WinAmp 5, I can select the second card for output, 
> but it will play on the first one.
> 
> Have I to consider this as application bugs, or should the 
> driver implement some workaround :
> 
> I saw that with KSPROPERTY_GENERAL_COMPONENTID
> the devices can be renamed in the driver, but it seems that 
> this does not work on Windows 2000
> 
> Do you know other solutions ???
> 
> 
> - Markus

You can find Digigram at:
Integrated Systems Asia, Suntec, Singapore, October 12-14, 2005, Booth number: 
F110
******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: