IAudioEndpointVolume::RegisterControlChangeNotify 方法 (endpointvolume.h)

RegisterControlChangeNotify 方法注册客户端的通知回调接口。

语法

HRESULT RegisterControlChangeNotify(
  [in] IAudioEndpointVolumeCallback *pNotify
);

参数

[in] pNotify

指向客户端正在注册通知回调的 IAudioEndpointVolumeCallback 接口的指针。 如果 RegisterControlChangeNotify 方法成功,它将在客户端的 IAudioEndpointVolumeCallback 接口上调用 AddRef 方法。

返回值

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

返回代码 说明
E_POINTER
参数 pNotifyNULL

注解

此方法注册当终结点的音量级别或静音状态更改时由系统调用的 IAudioEndpointVolumeCallback 接口。 调用方实现 IAudioEndpointVolumeCallback 接口。

不再需要通知时,客户端可以调用 IAudioEndpointVolume::UnregisterControlChangeNotify 方法来终止通知。

在客户端释放对 IAudioEndpointVolumeCallback 接口的最终引用之前,它应调用 UnregisterControlChangeNotify 以取消注册接口。 否则,应用程序会泄漏 IAudioEndpointVolumeCallbackIAudioEndpointVolume 对象持有的资源。 请注意, RegisterControlChangeNotify 调用客户端的 IAudioEndpointVolumeCallback::AddRef 方法, UnregisterControlChangeNotify 调用 IAudioEndpointVolumeCallback::Release 方法。 如果客户端在调用 UnregisterControlChangeNotify 之前释放对 IAudioEndpointVolumeCallback 接口的引用,则 IAudioEndpointVolume 对象永远不会释放其对 IAudioEndpointVolumeCallback 接口的引用。 例如,设计不佳的 IAudioEndpointVolumeCallback 实现可能会从 IAudioEndpointVolumeCallback 对象的析构函数调用 UnregisterControlChangeNotify 在这种情况下,在 IAudioEndpointVolume 对象释放对 IAudioEndpointVolumeCallback 接口的引用之前,客户端不会调用 UnregisterControlChangeNotify,而 IAudioEndpointVolume 对象在客户端调用 UnregisterControlChangeNotify 之前不会释放其对 IAudioEndpointVolumeCallback 接口的引用。 有关 AddRefRelease 方法的详细信息,请参阅 Windows SDK 文档中有关 IUnknown 接口的讨论。

此外,客户端应在释放对 IAudioEndpointVolume 对象的最终引用之前调用 UnregisterControlChangeNotify。 否则,对象会泄漏它为保存注册信息而分配的存储。 注册通知接口后,只要 IAudioEndpointVolume 对象存在,客户端才会继续接收通知。

有关调用 RegisterControlChangeNotify 的代码示例,请参阅 Endpoint Volume Controls

要求

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

另请参阅

IAudioEndpointVolume 接口

IAudioEndpointVolume::UnregisterControlChangeNotify

IAudioEndpointVolumeCallback 接口