IAudioSessionControl::GetState 方法 (audiopolicy.h)

GetState 方法检索音频会话的当前状态。

语法

HRESULT GetState(
  [out] AudioSessionState *pRetVal
);

参数

[out] pRetVal

指向方法在其中写入当前会话状态的变量的指针。 状态必须是以下 AudioSessionState 枚举值之一:

AudioSessionStateActive

AudioSessionStateInactive

AudioSessionStateExpired

这些值指示会话状态分别为活动、非活动或已过期。 有关详细信息,请参阅“备注”。

返回值

如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。

返回代码 说明
E_POINTER
参数 pRetValNULL
AUDCLNT_E_DEVICE_INVALIDATED
音频终结点设备已拔出,或者音频硬件或关联的硬件资源已重新配置、禁用、删除或以其他方式不可用。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 音频服务未运行。

注解

此方法指示会话的状态是活动、非活动还是已过期。 如果会话有一个或多个正在运行的流,则状态为活动状态。 会话中最后一个运行流停止时,状态将从活动更改为非活动状态。 当客户端通过释放对流对象的所有引用来销毁会话中的最后一个流时,会话状态更改为已过期。

Sndvol 程序显示处于活动和非活动状态的会话的音量和静音控件。 会话过期后,Sndvol 将停止显示该会话的控件。 如果会话以前已过期,但会话状态更改为活动 (因为会话中的流开始运行) 或非活动 (因为客户端将新流分配给会话) ,Sndvol 将继续显示会话的控件。

客户端通过调用 IAudioClient::Initialize 方法创建流。 在创建流时,客户端会将流分配给会话。 当客户端将第一个流分配给会话时,会话将开始。 最初,会话处于非活动状态。 会话中的第一个流开始运行时,会话状态将更改为活动状态。 当客户端释放对会话中最后一个剩余流对象的最终引用时,会话将终止。

要求

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

另请参阅

IAudioClient::Initialize

IAudioSessionControl 接口

IMMDevice::Activate