IAudioSessionEvents::OnSessionDisconnected 方法 (audiopolicy.h)
OnSessionDisconnected 方法通知客户端音频会话已断开连接。
语法
HRESULT OnSessionDisconnected(
[in] AudioSessionDisconnectReason DisconnectReason
);
参数
[in] DisconnectReason
音频会话断开连接的原因。 调用方将此参数设置为下表中显示的 AudioSessionDisconnectReason 枚举值之一。
值 | 说明 |
---|---|
DisconnectReasonDeviceRemoval | 用户删除了音频终结点设备。 |
DisconnectReasonServerShutdown | Windows 音频服务已停止。 |
DisconnectReasonFormatChanged | 音频会话连接到的设备流格式已更改。 |
DisconnectReasonSessionLogoff | 用户注销了Windows 终端服务 (WTS) 运行音频会话的会话。 |
DisconnectReasonSessionDisconnected | 正在运行音频会话的 WTS 会话已断开连接。 |
DisconnectReasonExclusiveModeOverride | (共享模式) 音频会话已断开连接,使音频终结点设备可用于独占模式连接。 |
有关 WTS 会话的详细信息,请参阅Windows SDK文档。
返回值
如果该方法成功,则它会返回 S_OK。 如果该方法失败,则会返回错误代码。
注解
断开会话连接时,会话管理器将关闭属于该会话的流,并使这些流上服务的所有未完成请求失效。 客户端应通过释放对闭合流的 IAudioClient 接口的所有引用,并释放它之前通过调用 IAudioClient::GetService 方法获取的服务接口的所有引用来响应断开连接。
断开连接后,WASAPI 接口中绑定到断开连接的会话中关闭的流的许多方法AUDCLNT_E_DEVICE_INVALIDATED (返回错误代码,例如,请参阅 IAudioClient::GetCurrentPadding) 。 有关从此错误中恢复的信息,请参阅 从 Invalid-Device 错误中恢复。
如果 Windows 音频服务意外终止,则它没有机会通知客户端它正在关闭。 在这种情况下,客户端在调用 IAudioClient::GetCurrentPadding 等方法时会发现服务不再运行并失败并出现错误代码AUDCLNT_E_SERVICE_NOT_RUNNING时,该服务已停止。
客户端无法生成会话断开连接事件。 系统始终是此类事件的源。 因此,与其他一些 IAudioSessionEvents 方法不同,此方法没有上下文参数。
有关实现 IAudioSessionEvents 接口中方法的代码示例,请参阅 音频会话事件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | audiopolicy.h |