Was bestimmt die Reihenfolge für Sound-Geräte in Windows bei der Verwendung von winmm.dll?

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

  •  19-09-2019
  •  | 
  •  

Frage

Ich versuche NAudio zu verwenden, um eine mehrere Tonausgabe Anwendung zu erstellen. Wir haben 8 USB-Soundkarten installiert. NAudio lässt mich alle 8 benutzen, aber ich kann nicht ein Muster zu bestimmen, welche Geräte-Index herauszufinden ist, welche Karte.

Die Karten werden auf unterschiedliche Hardware angeschlossen, so ist es wichtig, dass Sie sicherstellen, dass wissen, welche Karten Sie verwenden.

Ich habe versucht, WMI zu verwenden, für die Informationen abzufragen, aber ich kann keine Informationen zu finden scheinen, dass die Reihenfolge der Sound-Geräte bestimmt.

Update: Ich habe vergessen, einige Informationen über dieses Problem zu schließen. Die Soundkarten sind alle USB-Soundkarten durch einen 12-Port-Hub angeschlossen.

War es hilfreich?

Lösung

Die Reihenfolge der Geräte ist nicht deterministisch für alle Versionen von Windows. Für Vista und höher, werden die Geräte in der Regel durch die DSound GUID bestellt (mehr oder weniger), so sind sie effektiv zufällig.

Andere Tipps

Ich nehme an, Sie WaveOut verwenden? Sie können WaveOut.GetCapabilities (DEVICE) nennen sich nach dem Namen des Geräts zu erhalten, die Sie helfen könnten.

Das ist, was ich mit so weit gekommen sind und es funktioniert für uns.

WMI verwenden können Sie die DeviceID von Win32_SoundDevice bekommen. Dann mit, dass Sie die registery unter HKLM \ SYSTEM \ CurrentControlSet \ Enum \ ‚DeviceID‘ zugreifen können und den String-Wert namens „Driver“ erhalten. Dieser Wert enthält den ClassGUID sowie eine Zahl am Ende.

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

Wenn Sie abstreifen, dass letzte Nummer * (15) * für alle von Ihnen klingen Geräte und um sie, dass die Reihenfolge ist, dass die Geräte von NAudio aufgeführt sind mit Anwendungen Winmm.dll. Es gibt auch einen Ort für diese Sound-Geräte, entweder in der registery auf demselben Schlüssel oder von Win32_PNPEntity die DeviceID verwenden.

In unserem Fall ist die Lage läßt uns bestimmen, welcher Port des USB-Hubs, die Geräte-Sound eingesteckt in.

Haben Sie einen Blick auf diesem MSDN-Artikel. Es nutzt Direct die Audiogeräte aufzuzählen:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top