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


Метод IAudioSessionManager2::RegisterSessionNotification (audiopolicy.h)

Метод RegisterSessionNotification регистрирует приложение для получения уведомления при создании сеанса.

Синтаксис

HRESULT RegisterSessionNotification(
  IAudioSessionNotification *SessionNotification
);

Параметры

SessionNotification

Указатель на реализацию приложения интерфейса IAudioSessionNotification . Если вызов метода завершается успешно, он вызывает метод AddRef в интерфейсе IAudioSessionNotification приложения.

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

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

Возвращаемое значение Описание
E_POINTER
SessionNotification имеет значение NULL.
E_OUTOFMEMORY
Не удалось создать внутренний объект из-за нехватки памяти.

Комментарии

Приложение может зарегистрироваться для получения уведомления при создании сеанса с помощью методов интерфейса IAudioSessionNotification . Приложение реализует интерфейс IAudioSessionNotification . Методы, определенные в этом интерфейсе, получают обратные вызовы из системы при создании сеанса. Пример кода, демонстрирующего реализацию этого интерфейса, см. в разделе

Интерфейс IAudioSessionNotification.

Чтобы начать получать уведомления, приложение вызывает метод IAudioSessionManager2::RegisterSessionNotification для регистрации интерфейса IAudioSessionNotification . Если приложению больше не требуются уведомления, оно вызывает метод IAudioSessionManager2::UnregisterSessionNotification для удаления регистрации.

Важно!

Чтобы начать получать уведомления, необходимо вызвать IAudioSessionEnumerator::GetCount . API перечисления сеансов отменяет уведомления о новых сеансах, пока приложение не получите список существующих сеансов. Это необходимо для предотвращения состояния гонки, которое может возникнуть при получении уведомления о сеансе во время запуска приложения, использующего API сеанса. Вызов GetCount активирует API перечисления, чтобы начать отправку уведомлений о сеансе.

Примечание Убедитесь, что приложение инициализирует COM с моделью многопоточных квартир (MTA), вызывая CoInitializeEx(NULL, COINIT_MULTITHREADED) в потоке, отличном от пользовательского интерфейса. Если MTA не инициализирован, приложение не получает уведомления о сеансе от диспетчера сеансов. Потоки, запускающие пользовательский интерфейс приложения, должны быть инициализированы моделью потоков подразделения.
 

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header audiopolicy.h

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

IAudioSessionManager2