Pergunta

Eu estou tentando usar NAudio para criar um aplicativo de saída de som múltipla. Nós temos 8 placas de som USB instalados. NAudio me permite usar todos os 8 mas eu não consigo descobrir um padrão para determinar qual índice dispositivo é qual cartão.

Os cartões serão ligados a hardware diferente, por isso é importante para se certificar de que você sabe qual o cartão que você está usando.

Eu tenho tentado usar o WMI para votação para a informação, mas eu não consigo localizar qualquer informação que determina a ordem dos dispositivos de som.

Update: Eu esqueci de incluir algumas informações sobre este problema. As placas de som são todas as placas de som USB ligado através de um cubo 12 porta.

Foi útil?

Solução

A ordem dos dispositivos é não determinística para todas as versões do Windows. Para o Vista e acima, os dispositivos são tipicamente ordenados pelo DSound GUID (mais ou menos) para que eles estejam efetivamente aleatória.

Outras dicas

Eu estou supondo que você está usando WaveOut? Você pode chamar WaveOut.GetCapabilities (DeviceNumber) para se apossar do nome do dispositivo, o que pode ajudá-lo.

Isto é o que eu vim acima com a medida e ele funciona para nós.

Usando WMI você pode obter o DeviceID de Win32_SoundDevice. Em seguida, usando que você pode acessar o registery em HKLM \ SYSTEM \ CurrentControlSet \ ENUM \ 'DeviceID' e obter o valor de cadeia chamado "Driver". Este valor contém o ClassGUID mais um número no final.

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

Se você retirar esse último número * (15) * para todos vocês soar dispositivos e fim-los, que é a ordem em que os dispositivos são listados a partir NAudio com usos WINMM.DLL. Há também um local para estes dispositivos sonoros, quer na registery na mesma chave ou de Win32_PNPEntity usando o DeviceID.

No nosso caso, a localização nos permite determinar qual porta do hub USB esse dispositivo de som está conectado.

Tenha uma olhada neste artigo MSDN. Ele usa DirectSound para enumerar os dispositivos de áudio:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top