Ce qui détermine l'ordre pour les appareils sonores dans les fenêtres lors de l'utilisation winmm.dll?

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

  •  19-09-2019
  •  | 
  •  

Question

Je suis en train d'utiliser NAudio pour créer un multiple application de sortie sonore. Nous avons 8 cartes son USB installées. NAudio me permet d'utiliser tous les 8 mais je ne peux pas trouver un modèle pour déterminer l'index de l'appareil est quelle carte.

Les cartes seront accrochés à un matériel différent donc il est important de vous assurer que vous savez quelle carte que vous utilisez.

J'ai essayé d'utiliser WMI pour interroger pour l'information, mais je ne peux pas sembler trouver toute information qui détermine l'ordre des périphériques audio.

Mise à jour: J'ai oublié d'inclure des informations sur ce problème. Les cartes son sont toutes les cartes son USB connectés par un concentrateur de ports 12.

Était-ce utile?

La solution

L'ordre des périphériques est non déterministe pour toutes les versions de Windows. Pour Vista et au-dessus, les dispositifs sont généralement commandés par le GUID DSound (plus ou moins) afin qu'ils soient effectivement aléatoire.

Autres conseils

Je suppose que vous utilisez WaveOut? Vous pouvez appeler WaveOut.GetCapabilities (DeviceNumber) pour mettre la main sur le nom de l'appareil, ce qui pourrait vous aider.

est ce que je suis venu avec jusqu'à présent et cela fonctionne pour nous.

Utilisation de WMI vous pouvez obtenir le DeviceID de Win32_SoundDevice. Ensuite, en utilisant que vous pouvez accéder au registery à HKLM \ SYSTEM \ CurrentControlSet \ ENUM \ « DeviceID » et obtenir la valeur de chaîne nommée « Driver ». Cette valeur contient les ClassGUID plus un numéro à la fin.

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

Si vous enlevez ce dernier numéro * (15) * pour vous tous et pour Sound Devices eux, qui est l'ordre dans lequel les dispositifs sont énumérés NAudio avec des utilisations WINMM.DLL. Il y a aussi un emplacement pour ces appareils sonores, que ce soit dans le registery à la clé ou de Win32_PNPEntity à l'aide du DeviceID.

Dans notre cas, l'emplacement nous permet de déterminer quel port du concentrateur USB que le son appareil est branché.

Jetez un oeil à cet article MSDN. Il utilise DirectSound d'énumérer les périphériques audio:

http://msdn.microsoft.com/ fr-fr / bibliothèque / bb318674 (VS.85) .aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top