문제

Naudio를 사용하여 여러 사운드 출력 응용 프로그램을 만들려고합니다. 8 개의 USB 사운드 카드가 설치되어 있습니다. Naudio를 사용하면 8 개를 모두 사용할 수 있지만 어떤 장치 인덱스인지를 결정하기위한 패턴을 알 수는 없습니다.

카드는 다른 하드웨어에 연결되므로 사용중인 카드를 아는 것이 중요합니다.

정보를 위해 WMI를 사용하려고 노력했지만 사운드 장치의 순서를 결정하는 정보를 찾을 수는 없습니다.

업데이트:이 문제에 대한 정보를 포함하는 것을 잊었습니다. 사운드 카드는 모두 12 포트 허브를 통해 연결된 USB 사운드 카드입니다.

도움이 되었습니까?

해결책

장치 순서는 모든 버전의 Windows에 대해 결정적이지 않습니다. Vista 이상의 경우 장치는 일반적으로 DSound Guid (더 많은)에 의해 주문되므로 효과적으로 무작위로 표시됩니다.

다른 팁

WaveOut을 사용하고 있다고 가정하고 있습니까? WaveOut.GetCapabilities (DevicEnumber)를 호출하여 장치 이름을 붙잡아도 도움이 될 수 있습니다.

이것이 내가 지금까지 내가 생각한 것이며 그것은 우리에게 효과적입니다.

WMI를 사용하면 Win32_SoundDevice에서 DeviceID를 얻을 수 있습니다. 그런 다음이를 사용하면 HKLM System CurrentControlset enum 'DeviceID'에서 레지스터에 액세스하고 "드라이버"라는 문자열 값을 얻을 수 있습니다. 이 값에는 클래스 가이드와 끝에 숫자가 포함되어 있습니다.

예시: {4D36E96C-E325-11CE-BFC1-08002BE10318} 0015

마지막 숫자* (15)*를 모두 사운드 장치를 사용하여 주문하고 주문하는 경우, 이는 장치가 Winmm.dll을 사용하여 Naudio에서 나열된 순서입니다. 동일한 키의 레지스터 또는 DeviceID를 사용하여 Win32_PNPENTITY에서 이러한 사운드 장치의 위치도 있습니다.

우리의 경우 위치를 사용하면 사운드 장치가 연결된 USB 허브의 어떤 포트를 결정할 수 있습니다.

이 MSDN 기사를 살펴보십시오. DirectSound를 사용하여 오디오 장치를 열거합니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top