2009-12-18 4 views
2

winmm API를 사용하여 오디오를 처리하고 있습니다. waveInGetDeviceCapswaveInMessage을 사용하여 "오디오 라인"을 고유하게 식별합니다. 비스타에서는 장치의 이름이 WaveInCaps 구조체에 의해 32 문자로 제한된다는 것을 제외하면 모든 것이 잘 작동합니다.다른 API에서 동일한 오디오 장치를 연결할 수 있습니까?

OS 버전이 Vista 이상일 때 핵심 API를 사용하려고합니다. 오디오 라인 정보를 수집하기 위해 IMMDeviceEnumerator.GetDeviceIMMDeviceEnumerator.EnumAudioEndpoints을 사용하고 있습니다.하지만 core API 아래에있는 한 장치가 waveXx API 아래에있는 하나의 항목과 관련되어 있음을 알 수는 없습니다.

나는 둘 다 장치 경로를 비교할 수 있다고 생각하지만 장치 경로 문자열을 "불투명 한"것으로 취급하는 MS의 권고에 어긋나게됩니다.

무엇이라고 말합니까?

+0

에 설명되어있는 내 질문은 : IMMDevice의 인스턴스 주어, 어떻게 (이 "라인 지수"나는 waveInOpen에 대한 인수로 사용할 수 있습니다 일을 알고있다 예를 들어) 해당 행과 관련이 있습니까? –

답변

3

이 시나리오는 내가 대답 도움이되는 다른 방법을 생각 http://msdn.microsoft.com/en-us/library/dd370819(VS.85).aspx

+0

좋아요! 이것은 특정 엔드 포인트의 GUID를 얻는 것과 같은 다른 것들에도 도움이 될 것입니다. –

+0

"해당 종점의 GUID"는 무엇을 의미합니까? DSound GUID를 의미합니까? PKEY_AudioEndpoint_GUID에서 사용할 수 있습니다. http://msdn.microsoft.com/en-us/library/ms790392.aspx DRV_QUERYDEVICEINTERFACE 및 DRV_QUERYENDPOINTID를 사용하여 지정된 웨이브 또는 믹서 ID에 대한 끝점 ID를 검색 할 수도 있습니다. –

+0

나는 다른 이유로 이미하고 있습니다. 큰 그림은 다음과 같습니다. waveInXxx API를 기반으로 사운드를 캡처하는 멀티미디어 프레임 워크를 개발 중입니다. 먼저 주어진 입력 라인을 오디오 장치 (setupAPI)에 연결해야하고, DRV_QUERYDEVICEINTERFACE를 사용하고 있습니다. WaveInXxx api에서 문제가되는 것은 Vista에서 장치 이름을 자르므로 소리를 직접 전달하여 그 전체 이름을 얻는 것입니다. –