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


Метод IAudioSessionControl::UnregisterAudioSessionNotification (audiopolicy.h)

Метод UnregisterAudioSessionNotification удаляет предыдущую регистрацию клиента для получения уведомлений.

Синтаксис

HRESULT UnregisterAudioSessionNotification(
  [in] IAudioSessionEvents *NewNotifications
);

Параметры

[in] NewNotifications

Указатель на интерфейс IAudioSessionEvents, реализованный клиентом. Клиент передал этот же указатель интерфейса на диспетчер сеансов в предыдущем вызове метода IAudioSessionControl::RegisterAudioSessionNotification . Если метод UnregisterAudioSessionNotification завершается успешно, он вызывает метод Release в интерфейсе IAudioSessionEvents клиента.

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

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

Код возврата Описание
E_POINTER
Параметр NewNotifications имеет значение NULL.
E_NOTFOUND
Указанный интерфейс не был ранее зарегистрирован клиентом или уже удален.

Комментарии

Клиент вызывает этот метод, когда ему больше не нужно получать уведомления. Метод 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

IAudioSessionControl::RegisterAudioSessionNotification

Интерфейс IAudioSessionEvents