Метод IAudioSessionControl::UnregisterAudioSessionNotification (audiopolicy.h)
Метод UnregisterAudioSessionNotification удаляет предыдущую регистрацию клиента для получения уведомлений.
Синтаксис
HRESULT UnregisterAudioSessionNotification(
[in] IAudioSessionEvents *NewNotifications
);
Параметры
[in] NewNotifications
Указатель на интерфейс IAudioSessionEvents, реализованный клиентом. Клиент передал этот же указатель интерфейса на диспетчер сеансов в предыдущем вызове метода IAudioSessionControl::RegisterAudioSessionNotification . Если метод UnregisterAudioSessionNotification завершается успешно, он вызывает метод Release в интерфейсе IAudioSessionEvents клиента.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Параметр NewNotifications имеет значение NULL. |
|
Указанный интерфейс не был ранее зарегистрирован клиентом или уже удален. |
Комментарии
Клиент вызывает этот метод, когда ему больше не нужно получать уведомления. Метод UnregisterAudioSessionNotification удаляет регистрацию интерфейса IAudioSessionEvents , ранее зарегистрированного клиентом в диспетчере сеансов, путем вызова метода IAudioSessionControl::RegisterAudioSessionNotification .
Прежде чем клиент выпускает окончательную ссылку на интерфейс IAudioSessionEvents , он должен вызвать UnregisterAudioSessionNotification , чтобы отменить регистрацию интерфейса. В противном случае приложение утечет ресурсов, хранящиеся объектами IAudioSessionEvents и IAudioSessionControl . Обратите внимание, что RegisterAudioSessionNotification вызывает метод IAudioSessionEvents::AddRef клиента, а UnregisterAudioSessionNotification вызывает метод IAudioSessionEvents::Release . Если клиент допустит ошибку путем освобождения ссылки на интерфейс IAudioSessionEvents перед вызовом UnregisterAudioSessionNotification, диспетчер сеансов никогда не освобождает ссылку на интерфейс IAudioSessionEvents . Например, плохо спроектированная реализация IAudioSessionEvents может вызвать UnregisterAudioSessionNotification из деструктора для объекта IAudioSessionEvents . В этом случае клиент не будет вызывать UnregisterAudioSessionNotification , пока диспетчер сеансов не отпустит ссылку на интерфейс IAudioSessionEvents , а диспетчер сеансов не разблокирует свою ссылку на интерфейс IAudioSessionEvents, пока клиент не вызовет UnregisterAudioSessionNotification. Дополнительные сведения о методах AddRef и Release см. в разделе Обсуждение интерфейса IUnknown в документации по Windows SDK.
Пример кода, который вызывает метод UnregisterAudioSessionNotification , см. в разделе Звуковые события для устаревших звуковых приложений.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | audiopolicy.h |
См. также раздел
Интерфейс IAudioSessionControl