다음을 통해 공유


ActivateAudioInterfaceAsync 함수(mmdeviceapi.h)

Windows 스토어 앱이 WASAPI 제품군의 기존 COM(구성 요소 개체 모델) 인터페이스에 액세스할 수 있도록 합니다.

통사론

HRESULT ActivateAudioInterfaceAsync(
  [in] LPCWSTR                                  deviceInterfacePath,
  [in] REFIID                                   riid,
  [in] PROPVARIANT                              *activationParams,
  [in] IActivateAudioInterfaceCompletionHandler *completionHandler,
       IActivateAudioInterfaceAsyncOperation    **activationOperation
);

매개 변수

[in] deviceInterfacePath

오디오 디바이스의 디바이스 인터페이스 ID입니다. 이는 일반적으로 DeviceInformation 개체 또는 MediaDevice 클래스의 메서드 중 하나에서 검색됩니다.

GUID DEVINTERFACE_AUDIO_CAPTUREDEVINTERFACE_AUDIO_RENDER 각각 기본 오디오 캡처 및 렌더링 디바이스를 나타냅니다. StringFromIID 호출하여 이러한 GUID 중 하나를 이 인수에 사용할 LPCWSTR 변환합니다.

프로세스 루프백 캡처를 위해 오디오 인터페이스를 활성화하는 AUDIOCLIENT_ACTIVATION_TYPE_PROCESS_LOOPBACK 지정합니다. 프로세스 루프백 캡처 시나리오를 보여 주는 샘플 코드는 Application Loopback API 캡처 샘플참조하세요.

[in] riid

IAudioClient같은 WASAPI 패밀리의 COM 인터페이스 IID입니다.

[in] activationParams

인터페이스별 활성화 매개 변수입니다. 자세한 내용은 IMMDevice::ActivatepActivationParams 매개 변수를 참조하세요.

Windows 10 빌드 20438부터 지정된 프로세스 ID와 연결된 오디오 스트림을 포함하거나 제외하도록 인터페이스를 활성화하는 AUDIOCLIENT_ACTIVATION_PARAMS 지정할 수 있습니다.

[in] completionHandler

활성화 프로시저의 결과를 사용할 수 있을 때 Windows에서 호출하는 호출자가 구현하는 인터페이스입니다.

activationOperation

요청된 WASAPI 인터페이스를 활성화하는 비동기 작업을 나타내는 IActivateAudioInterfaceAsyncOperation 인터페이스를 반환합니다.

반환 값

이 함수는 HRESULT반환합니다. 가능한 값은 다음 표에 있는 값을 포함하지만 제한되지는 않습니다.

반환 코드 묘사
S_OK
기본 개체 및 비동기 작업이 성공적으로 생성되었습니다.
E_ILLEGAL_METHOD_CALL
Windows 10 이전 버전의 Windows에서는 잘못된 COM 아파트에서 함수가 호출되거나 전달된 IActivateAudioInterfaceCompletionHandler agile 개체에 구현되지 않은 경우(자유 스레드 마샬러 집계) 이 오류가 발생할 수 있습니다.

발언

이 함수를 사용하면 Windows 스토어 앱이 Windows.Devices Windows 런타임 API를 사용한 후 특정 WASAPI COM 인터페이스를 활성화하고 Windows.Media.Devices 네임스페이스를 오디오 디바이스를 선택할 수 있습니다.

많은 구현의 경우 시스템에서 사용자에게 대화 상자를 표시할 수 있도록 애플리케이션이 기본 UI 스레드에서 이 함수를 호출하여 WASAPI 제품군에서 COM 인터페이스를 활성화해야 합니다. 애플리케이션은 completionHandler통해 IActivateAudioInterfaceCompletionHandler 콜백 COM 인터페이스를 전달합니다. Windows는 활성화 결과를 사용할 수 있는 경우 애플리케이션의 IActivateAudioInterfaceCompletionHandler 인터페이스의 메서드를 COM MTA(다중 스레드 아파트)의 작업자 스레드에서 호출합니다. 그런 다음 애플리케이션은 IActivateAudioInterfaceAsyncOperation 인터페이스에서 메서드를 호출하여 결과 코드와 요청된 WASAPI 인터페이스를 검색할 수 있습니다. 명시적으로 안전하므로 기본 UI 스레드에서 이 함수를 호출할 필요가 없는 일부 활성화가 있습니다. 이러한 명시적으로 안전한 활성화는 다음과 같습니다.

  • 오디오 렌더링 디바이스를 지정하는 deviceInterfacePathIAudioClient 인터페이스를 지정하는 riid 사용하여 ActivateAudioInterfaceAsync 호출합니다.
  • 오디오 렌더링 디바이스를 지정하는 deviceInterfacePathIAudioEndpointVolume 인터페이스를 지정하는 riid 사용하여 ActivateAudioInterfaceAsync 호출합니다.
  • 세션 0 서비스에서 ActivateAudioInterfaceAsync 호출합니다. 자세한 내용은 Services참조하세요.
Windows는 작업이 완료되고 애플리케이션이 IActivateAudioInterfaceAsyncOperation 인터페이스를 해제할 때까지 애플리케이션의 IActivateAudioInterfaceCompletionHandler 인터페이스에 대한 참조를 보유합니다.
중요  

애플리케이션은 완료 처리기 콜백이 실행될 때까지 IActivateAudioInterfaceCompletionHandler 구현하는 개체를 해제해서는 안 됩니다.

 
활성화된 WASAPI 인터페이스에 따라 이 함수는 처음 호출될 때 동의 프롬프트를 표시할 수 있습니다. 예를 들어 애플리케이션이 마이크에 액세스하기 위해 IAudioClient 활성화하기 위해 이 함수를 호출하는 경우 동의 프롬프트의 목적은 앱이 마이크에 액세스할 수 있는 사용자의 권한을 얻는 것입니다. 동의 프롬프트에 대한 자세한 내용은 개인 데이터액세스하는 디바이스에 대한 지침을 참조하세요.

동의 프롬프트를 표시할 수 있도록 기본 UI 스레드에서 ActivateAudioInterfaceAsync 호출해야 합니다. 동의 프롬프트를 표시할 수 없는 경우 사용자는 앱에 대한 디바이스 액세스 권한을 부여할 수 없습니다.

Windows 10 이전 버전의 Windows에서는 오디오 캡처를 위해 디바이스를 열 때 STA(COM Single-Threaded Apartment)의 스레드에서 ActivateAudioInterfaceAsync 호출해야 합니다. ActivateAudioInterfaceAsync 전달되는 completionHandler MTA에서 completionHandler 호출될 때 교착 상태가 없도록 IAgileObject 구현해야 합니다. 그렇지 않으면 E_ILLEGAL_METHOD_CALL 발생합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 mmdeviceapi.h(Mmdevapi.idl 포함)
라이브러리 Mmdevapi.lib
DLL Mmdevapi.dll
IRQL 아니요

참고 항목

핵심 오디오 함수

IActivateAudioInterfaceAsyncOperation

IActivateAudioInterfaceCompletionHandler