다음을 통해 공유


IAudioClient::GetService 메서드(audioclient.h)

GetService 메서드는 오디오 클라이언트 개체에서 추가 서비스에 액세스합니다.

구문

HRESULT GetService(
  [in]  REFIID riid,
  [out] void   **ppv
);

매개 변수

[in] riid

요청된 서비스의 인터페이스 ID입니다. 클라이언트는 이 매개 변수를 다음 REFIID 값 중 하나로 설정해야 합니다.

IID_IAudioCaptureClient

IID_IAudioClientDuckingControl

IID_IAudioClock

IID_IAudioRenderClient

IID_IAudioSessionControl

IID_IAudioStreamVolume

IID_IChannelAudioVolume

IID_IMFTrustedOutput

IID_ISimpleAudioVolume

자세한 내용은 설명 부분을 참조하세요.

[out] ppv

메서드가 요청된 인터페이스의 instance 주소를 쓰는 포인터 변수에 대한 포인터입니다. 이 메서드를 통해 호출자는 인터페이스에 대한 계산된 참조를 가져옵니다. 호출자는 인터페이스의 Release 메서드를 호출하여 더 이상 필요하지 않은 경우 인터페이스를 해제 할 책임이 있습니다. GetService 호출이 실패하면 *ppvNULL입니다.

반환 값

메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드는 다음 표에 표시된 값을 포함하지만 이에 국한되지 않습니다.

반환 코드 설명
E_POINTER
매개 변수 ppvNULL입니다.
E_NOINTERFACE
요청된 인터페이스를 사용할 수 없습니다.
AUDCLNT_E_NOT_INITIALIZED
오디오 스트림이 초기화되지 않았습니다.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
호출자가 렌더링 엔드포인트의 IAudioCaptureClient 인터페이스 또는 캡처 엔드포인트의 IAudioRenderClient 인터페이스에 액세스하려고 했습니다.
AUDCLNT_E_DEVICE_INVALIDATED
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다.
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 오디오 서비스가 실행되고 있지 않습니다.

설명

이 메서드를 사용하려면 IAudioClient 인터페이스를 미리 초기화해야 합니다. 이 메서드에 대한 모든 호출은 클라이언트가 IAudioClient::Initialize 메서드를 성공적으로 호출하여 오디오 스트림을 초기화할 때까지 오류 AUDCLNT_E_NOT_INITIALIZED 실패합니다.

GetService 메서드는 다음 서비스 인터페이스를 지원합니다.

Windows 7에서는 OTA(출력 신뢰 기관) 개체의 사용을 용이하게 하는 새 서비스 식별자 IID_IMFTrustedOutput 추가되었습니다. 이러한 개체는 Media Foundation의 PMP(보호된 미디어 경로) 내부 또는 외부에서 작동하고 Media Foundation 파이프라인 외부에 콘텐츠를 보낼 수 있습니다. 호출자가 PMP 외부에 있는 경우 OTA가 PMP에서 작동하지 않을 수 있으며 보호 설정이 덜 강력합니다. OTA는 IMFTrustedOutput 인터페이스를 구현해야 합니다. GetService에서 IID_IMFTrustedOutput 전달하면 애플리케이션이 개체의 IMFTrustedOutput 인터페이스에 대한 포인터를 검색할 수 있습니다. 보호된 개체 및 IMFTrustedOutput에 대한 자세한 내용은 Media Foundation SDK 설명서의 "보호된 미디어 경로"를 참조하세요.

OTA에서 신뢰할 수 있는 오디오 드라이버를 사용하는 방법에 대한 자세한 내용은 PUMA(보호된 사용자 모드 오디오)를 참조하세요.

이 메커니즘을 통해 IMFTrustedOutput을 활성화하는 것은 호출자가 PMP에서 실행 중인지 여부에 관계없이 작동합니다. 그러나 호출자가 보호된 프로세스에서 실행되고 있지 않으면(즉, 호출자가 Media Foundation의 PMP 내에 있지 않음) 오디오 OTA가 PMP에서 작동하지 않을 수 있으며 보호 설정이 덜 강력합니다.

서비스 인터페이스의 인터페이스 ID를 가져오려면 __uuidof 연산자를 사용합니다. 예를 들어 IAudioCaptureClient 의 인터페이스 ID는 다음과 같이 정의됩니다.


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

__uuidof 연산자에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.

IAudioClient 개체를 해제하고 연결된 모든 리소스를 해제하려면 클라이언트는 IAudioClient 인터페이스 자체에서 Release를 호출하는 것 외에도 GetService를 호출하여 만든 모든 서비스 개체에 대한 모든 참조를 해제해야 합니다. 클라이언트는 IAudioClient 개체를 해제하는 동일한 스레드에서 서비스를 해제해야 합니다.

IAudioSessionControl, IAudioStreamVolume, IChannelAudioVolumeISimpleAudioVolume 인터페이스는 오디오 세션 및 공유 모드 스트림의 측면을 제어하고 모니터링합니다. 이러한 인터페이스는 배타적 모드 스트림에서 작동하지 않습니다.

GetService 메서드를 호출하는 코드 예제는 다음 topics 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 audioclient.h

추가 정보

IAudioCaptureClient 인터페이스

IAudioClient 인터페이스

IAudioClient::Initialize

IAudioClock 인터페이스

IAudioRenderClient 인터페이스

IAudioSessionControl 인터페이스

IAudioStreamVolume 인터페이스

IChannelAudioVolume 인터페이스

ISimpleAudioVolume 인터페이스