Sì, c'è una soluzione alternativa. Ho risolto questo problema più volte nel codice di spedizione.
Enumerare i dispositivi di acquisizione audio con DirectSoundCapture. L'API è DirectSoundCaptureEnumerate. Ti restituirà il nome completo dei dispositivi.
Ovviamente, probabilmente stai pensando "È fantastico, ma il resto del mio codice è configurato per utilizzare l'API Wave, non DirectSound. Non voglio spostarlo da capo. ID GUID restituiti da DirectSoundCaptureEnumerate agli ID interi utilizzati dall'API WaveIn? "
La soluzione è CoCreateInstance per l'oggetto DirectSoundPrivate (o chiamare GetClassObject direttamente da dsound.dll) per ottenere un puntatore a un'interfaccia IKsPropertySet. Da questa interfaccia, è possibile ottenere il DSID di GUID per il mapping di Wave ID. Per maggiori dettagli vedi questa pagina web:
http://msdn.microsoft.com/en-us/library/bb206182(VS.85).aspx
Si desidera utilizzare il DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING come descritto sulla pagina web di cui sopra.
grazie, questo è davvero disponibile (anche se la vergogna deve essere così contorto) –
che collegano sembra essere rotto . hai un altro link o almeno il titolo dell'articolo su msdn? –
Un altro metodo per ottenere il GUID è chiamare waveOutGetDevCaps con una struttura WAVEOUTCAPS2 anziché con la normale struttura WAVEOUTCAPS. http://msdn.microsoft.com/en-us/library/windows/hardware/ff536382%28v=vs.85%29.aspx – leiflundgren