IAudioSessionControl::UnregisterAudioSessionNotification 方法 (audiopolicy.h)

UnregisterAudioSessionNotification 方法删除客户端先前的注册以接收通知。

语法

HRESULT UnregisterAudioSessionNotification(
  [in] IAudioSessionEvents *NewNotifications
);

参数

[in] NewNotifications

指向客户端实现的 IAudioSessionEvents 接口的 指针。 在对 IAudioSessionControl::RegisterAudioSessionNotification 方法的调用中,客户端将此相同的接口指针传递给会话管理器。 如果 UnregisterAudioSessionNotification 方法成功,它会在客户端的 IAudioSessionEvents 接口上调用 Release 方法。

返回值

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

返回代码 说明
E_POINTER
参数 NewNotificationsNULL
E_NOTFOUND
指定的接口以前未由客户端注册或已被删除。

注解

客户端在不再需要接收通知时调用此方法。 UnregisterAudioSessionNotification 方法通过调用 IAudioSessionControl::RegisterAudioSessionNotification 方法删除客户端以前向会话管理器注册的 IAudioSessionEvents 接口的注册。

在客户端发布对 IAudioSessionEvents 接口的最终引用之前,它应调用 UnregisterAudioSessionNotification 来注销接口。 否则,应用程序会泄漏 IAudioSessionEventsIAudioSessionControl 对象持有的资源。 请注意, RegisterAudioSessionNotification 调用客户端的 IAudioSessionEvents::AddRef 方法, 而 UnregisterAudioSessionNotification 调用 IAudioSessionEvents::Release 方法。 如果客户端在调用 UnregisterAudioSessionNotification 之前释放对 IAudioSessionEvents 接口的引用,则会话管理器永远不会释放其对 IAudioSessionEvents 接口的引用。 例如,设计不佳的 IAudioSessionEvents 实现可能会从 IAudioSessionEvents 对象的析构函数调用 UnregisterAudioSessionNotification 在这种情况下,在会话管理器释放对 IAudioSessionEvents 接口的引用之前,客户端不会调用 UnregisterAudioSessionNotification,会话管理器在客户端调用 UnregisterAudioSessionNotification 之前不会释放其对 IAudioSessionEvents 接口的引用。 有关 AddRefRelease 方法的详细信息,请参阅 Windows SDK 文档中有关 IUnknown 接口的讨论。

有关调用 UnregisterAudioSessionNotification 方法的代码示例,请参阅 旧版音频应用程序的音频事件

要求

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

另请参阅

IAudioSessionControl 接口

IAudioSessionControl::RegisterAudioSessionNotification

IAudioSessionEvents 接口