Поделиться через


Метод IAudioEndpointVolume::RegisterControlChangeNotify (endpointvolume.h)

Метод RegisterControlChangeNotify регистрирует интерфейс обратного вызова уведомления клиента.

Синтаксис

HRESULT RegisterControlChangeNotify(
  [in] IAudioEndpointVolumeCallback *pNotify
);

Параметры

[in] pNotify

Указатель на интерфейс IAudioEndpointVolumeCallback , который клиент регистрирует для обратных вызовов уведомлений. Если метод RegisterControlChangeNotify завершается успешно, он вызывает метод AddRef в интерфейсе IAudioEndpointVolumeCallback клиента.

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.

Код возврата Описание
E_POINTER
Параметр pNotify имеет значение NULL.

Комментарии

Этот метод регистрирует интерфейс IAudioEndpointVolumeCallback , вызываемый системой при изменении уровня громкости или отключения конечной точки. Вызывающий объект реализует интерфейс IAudioEndpointVolumeCallback .

Если уведомления больше не нужны, клиент может вызвать метод IAudioEndpointVolume::UnregisterControlChangeNotify для завершения уведомлений.

Прежде чем клиент выпускает окончательную ссылку на интерфейс IAudioEndpointVolumeCallback , он должен вызвать UnregisterControlChangeNotify , чтобы отменить регистрацию интерфейса. В противном случае приложение будет утекать ресурсы, хранящиеся в объектах IAudioEndpointVolumeCallback и IAudioEndpointVolume . Обратите внимание, что RegisterControlChangeNotify вызывает метод IAudioEndpointVolumeCallback::AddRef клиента, а UnregisterControlChangeNotify вызывает метод IAudioEndpointVolumeCallback::Release . Если клиент вызывает ошибку, освобождая ссылку на интерфейс IAudioEndpointVolumeCallback перед вызовом UnregisterControlChangeNotify, объект IAudioEndpointVolume никогда не освобождает ссылку на интерфейс IAudioEndpointVolumeCallback . Например, плохо спроектированная реализация IAudioEndpointVolumeCallback может вызвать UnregisterControlChangeNotify из деструктора для объекта IAudioEndpointVolumeCallback . В этом случае клиент не будет вызывать UnregisterControlChangeNotify , пока объект IAudioEndpointVolume не освободит свою ссылку на интерфейс IAudioEndpointVolumeCallback , а объект IAudioEndpointVolume не будет выпускать ссылку на интерфейс IAudioEndpointVolumeCallback , пока клиент не вызовет UnregisterControlChangeNotify. Дополнительные сведения о методах AddRef и Release см. в обсуждении интерфейса IUnknown в документации по Windows SDK.

Кроме того, перед освобождением окончательной ссылки на объект IAudioEndpointVolume клиент должен вызвать UnregisterControlChangeNotify. В противном случае объект будет утекать хранилище, выделенное для хранения регистрационных данных. После регистрации интерфейса уведомлений клиент продолжает получать уведомления только до тех пор, пока существует объект IAudioEndpointVolume .

Пример кода, который вызывает RegisterControlChangeNotify, см. в разделе Элементы управления объемом конечной точки.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header endpointvolume.h

См. также раздел

Интерфейс IAudioEndpointVolume

IAudioEndpointVolume::UnregisterControlChangeNotify

Интерфейс IAudioEndpointVolumeCallback