Che cosa determina l'ordine per i dispositivi audio in Windows quando si utilizza winmm.dll?

StackOverflow https://stackoverflow.com/questions/1505522

  •  19-09-2019
  •  | 
  •  

Domanda

Sto cercando di utilizzare NAudio per creare un'applicazione uscita audio multipla. Abbiamo 8 schede audio USB installate. NAudio mi permette di usare tutte le 8, ma non riesco a capire un modello per determinare quale indice dispositivo è quale carta.

Le carte saranno agganciati su hardware diverso, quindi è importante assicurarsi di sapere quale carta che si sta utilizzando.

Ho cercato di utilizzare WMI per il polling per le informazioni, ma io non riesco a trovare alcuna informazione che determina l'ordine dei dispositivi audio.

Aggiornamento: Ho dimenticato di includere alcune informazioni su questo problema. Le schede audio sono tutte le schede audio USB collegati tramite un mozzo 12 porta.

È stato utile?

Soluzione

L'ordine dei dispositivi è non deterministico per tutte le versioni di Windows. Per Vista e sopra, i dispositivi sono in genere disposte dal DSound GUID (più o meno) in modo che siano effettivamente casuale.

Altri suggerimenti

Sto assumendo che si sta utilizzando WaveOut? È possibile chiamare WaveOut.GetCapabilities (DeviceNumber) per entrare in possesso del nome del dispositivo, che potrebbe aiutarvi.

Questo è quello che sono venuto in mente finora e funziona per noi.

Utilizzando WMI è possibile ottenere il DeviceID da Win32_SoundDevice. Quindi, utilizzando che si può accedere al Registery in HKLM \ SYSTEM \ CurrentControlSet \ 'DeviceID' ENUM \ e ottenere il valore di stringa denominato "Driver". Questo valore contiene le ClassGUID più un numero alla fine.

Esempio: {4d36e96c-E325-11CE-BFC1-08002BE10318} \ 0015

Se si spogliano che ultimo numero * (15) * per tutti voi i dispositivi e l'ordine suono di loro, che è l'ordine che i dispositivi sono elencati dal NAudio con gli usi Winmm.dll. V'è anche un luogo per questi dispositivi audio, sia in Registery allo stesso tasto o dal Win32_PNPEntity utilizzando il DeviceID.

Nel nostro caso la posizione ci consente di determinare quale porta del hub USB che il suono dispositivo viene collegato.

Date un'occhiata a questo articolo di MSDN. Esso utilizza DirectSound per enumerare i dispositivi audio:

http://msdn.microsoft.com/ it-it / library / bb318674 (VS.85) aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top