IAudioSessionControl::UnregisterAudioSessionNotification 方法 (audiopolicy.h)
UnregisterAudioSessionNotification 方法删除客户端先前的注册以接收通知。
语法
HRESULT UnregisterAudioSessionNotification(
[in] IAudioSessionEvents *NewNotifications
);
参数
[in] NewNotifications
指向客户端实现的 IAudioSessionEvents 接口的 指针。 在对 IAudioSessionControl::RegisterAudioSessionNotification 方法的调用中,客户端将此相同的接口指针传递给会话管理器。 如果 UnregisterAudioSessionNotification 方法成功,它会在客户端的 IAudioSessionEvents 接口上调用 Release 方法。
返回值
如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。
返回代码 | 说明 |
---|---|
|
参数 NewNotifications 为 NULL。 |
|
指定的接口以前未由客户端注册或已被删除。 |
注解
客户端在不再需要接收通知时调用此方法。 UnregisterAudioSessionNotification 方法通过调用 IAudioSessionControl::RegisterAudioSessionNotification 方法删除客户端以前向会话管理器注册的 IAudioSessionEvents 接口的注册。
在客户端发布对 IAudioSessionEvents 接口的最终引用之前,它应调用 UnregisterAudioSessionNotification 来注销接口。 否则,应用程序会泄漏 IAudioSessionEvents 和 IAudioSessionControl 对象持有的资源。 请注意, RegisterAudioSessionNotification 调用客户端的 IAudioSessionEvents::AddRef 方法, 而 UnregisterAudioSessionNotification 调用 IAudioSessionEvents::Release 方法。 如果客户端在调用 UnregisterAudioSessionNotification 之前释放对 IAudioSessionEvents 接口的引用,则会话管理器永远不会释放其对 IAudioSessionEvents 接口的引用。 例如,设计不佳的 IAudioSessionEvents 实现可能会从 IAudioSessionEvents 对象的析构函数调用 UnregisterAudioSessionNotification。 在这种情况下,在会话管理器释放对 IAudioSessionEvents 接口的引用之前,客户端不会调用 UnregisterAudioSessionNotification,会话管理器在客户端调用 UnregisterAudioSessionNotification 之前不会释放其对 IAudioSessionEvents 接口的引用。 有关 AddRef 和 Release 方法的详细信息,请参阅 Windows SDK 文档中有关 IUnknown 接口的讨论。
有关调用 UnregisterAudioSessionNotification 方法的代码示例,请参阅 旧版音频应用程序的音频事件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | audiopolicy.h |