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

指向指针变量的指针,方法在该变量中写入所请求接口实例的地址。 通过此方法,调用方获取对 接口的计数引用。 调用方负责通过调用接口的 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 中,添加了一个新的服务标识符 (IID_IMFTrustedOutput),它便于使用输出信任机构 (OTA) 对象。 这些对象可以在媒体基础的受保护媒体路径内部或外部运行, (PMP) 并在媒体基础管道外发送内容。 如果调用方在 PMP 外部,则 OTA 可能无法在 PMP 中运行,并且保护设置不太可靠。 OTA 必须实现 IMFTrustedOutput 接口。 通过在 GetService 中传递IID_IMFTrustedOutput,应用程序可以检索指向对象的 IMFTrustedOutput 接口的指针。 有关受保护对象和 IMFTrustedOutput 的详细信息,请参阅媒体基础 SDK 文档中的“受保护的媒体路径”。

有关在 OTA 中使用受信任的音频驱动程序的信息,请参阅 受保护的用户模式音频 (PUMA)

请注意,无论调用方是否在 PMP 中运行,都可通过此机制激活 IMFTrustedOutput。 但是,如果调用方未在受保护的进程中运行, (也就是说,调用方不在 Media Foundation 的 PMP) 则音频 OTA 可能无法在 PMP 中运行,并且保护设置不太可靠。

若要获取服务接口的接口 ID,请使用 __uuidof 运算符。 例如, IAudioCaptureClient 的接口 ID 定义如下:


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

有关 __uuidof 运算符的信息,请参阅Windows SDK文档。

若要释放 IAudioClient 对象并释放其所有关联的资源,除了在 IAudioClient 接口本身上调用 Release 外,客户端还必须释放对通过调用 GetService 创建的任何服务对象的所有引用。 客户端必须从释放 IAudioClient 对象的同一线程释放服务。

IAudioSessionControlIAudioStreamVolumeIChannelAudioVolumeISimpleAudioVolume 接口控制和监视音频会话和共享模式流的方面。 这些接口不适用于独占模式流。

有关调用 GetService 方法的代码示例,请参阅以下主题:

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 audioclient.h

另请参阅

IAudioCaptureClient 接口

IAudioClient 接口

IAudioClient::Initialize

IAudioClock 接口

IAudioRenderClient 接口

IAudioSessionControl 接口

IAudioStreamVolume 接口

IChannelAudioVolume 接口

ISimpleAudioVolume 接口