Метод IAudioEndpointVolume::RegisterControlChangeNotify (endpointvolume.h)
Метод RegisterControlChangeNotify регистрирует интерфейс обратного вызова уведомления клиента.
Синтаксис
HRESULT RegisterControlChangeNotify(
[in] IAudioEndpointVolumeCallback *pNotify
);
Параметры
[in] pNotify
Указатель на интерфейс IAudioEndpointVolumeCallback , который клиент регистрирует для обратных вызовов уведомлений. Если метод RegisterControlChangeNotify завершается успешно, он вызывает метод AddRef в интерфейсе IAudioEndpointVolumeCallback клиента.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Параметр 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