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 호출이 실패하면 *ppv는 NULL입니다.
반환 값
메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드는 다음 표에 표시된 값을 포함하지만 이에 국한되지 않습니다.
반환 코드 | 설명 |
---|---|
|
매개 변수 ppv는 NULL입니다. |
|
요청된 인터페이스를 사용할 수 없습니다. |
|
오디오 스트림이 초기화되지 않았습니다. |
|
호출자가 렌더링 엔드포인트의 IAudioCaptureClient 인터페이스 또는 캡처 엔드포인트의 IAudioRenderClient 인터페이스에 액세스하려고 했습니다. |
|
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다. |
|
Windows 오디오 서비스가 실행되고 있지 않습니다. |
설명
이 메서드를 사용하려면 IAudioClient 인터페이스를 미리 초기화해야 합니다. 이 메서드에 대한 모든 호출은 클라이언트가 IAudioClient::Initialize 메서드를 성공적으로 호출하여 오디오 스트림을 초기화할 때까지 오류 AUDCLNT_E_NOT_INITIALIZED 실패합니다.
GetService 메서드는 다음 서비스 인터페이스를 지원합니다.
- IAudioCaptureClient
- IAudioClock
- IAudioRenderClient
- IAudioSessionControl
- IAudioStreamVolume
- IChannelAudioVolume
- IMFTrustedOutput
- ISimpleAudioVolume
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, IChannelAudioVolume 및 ISimpleAudioVolume 인터페이스는 오디오 세션 및 공유 모드 스트림의 측면을 제어하고 모니터링합니다. 이러한 인터페이스는 배타적 모드 스트림에서 작동하지 않습니다.
GetService 메서드를 호출하는 코드 예제는 다음 topics 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | audioclient.h |