Метод IAudioSessionManager2::RegisterSessionNotification (audiopolicy.h)
Метод RegisterSessionNotification регистрирует приложение для получения уведомления при создании сеанса.
Синтаксис
HRESULT RegisterSessionNotification(
IAudioSessionNotification *SessionNotification
);
Параметры
SessionNotification
Указатель на реализацию приложения интерфейса IAudioSessionNotification . Если вызов метода завершается успешно, он вызывает метод AddRef в интерфейсе IAudioSessionNotification приложения.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.
Возвращаемое значение | Описание |
---|---|
|
SessionNotification имеет значение NULL. |
|
Не удалось создать внутренний объект из-за нехватки памяти. |
Комментарии
Приложение может зарегистрироваться для получения уведомления при создании сеанса с помощью методов интерфейса IAudioSessionNotification . Приложение реализует интерфейс IAudioSessionNotification . Методы, определенные в этом интерфейсе, получают обратные вызовы из системы при создании сеанса. Пример кода, демонстрирующего реализацию этого интерфейса, см. в разделе
Интерфейс IAudioSessionNotification.
Чтобы начать получать уведомления, приложение вызывает метод IAudioSessionManager2::RegisterSessionNotification для регистрации интерфейса IAudioSessionNotification . Если приложению больше не требуются уведомления, оно вызывает метод IAudioSessionManager2::UnregisterSessionNotification для удаления регистрации.
Важно!
Чтобы начать получать уведомления, необходимо вызвать IAudioSessionEnumerator::GetCount . API перечисления сеансов отменяет уведомления о новых сеансах, пока приложение не получите список существующих сеансов. Это необходимо для предотвращения состояния гонки, которое может возникнуть при получении уведомления о сеансе во время запуска приложения, использующего API сеанса. Вызов GetCount активирует API перечисления, чтобы начать отправку уведомлений о сеансе.
CoInitializeEx(NULL, COINIT_MULTITHREADED)
в потоке, отличном от пользовательского интерфейса. Если MTA не инициализирован, приложение не получает уведомления о сеансе от диспетчера сеансов.
Потоки, запускающие пользовательский интерфейс приложения, должны быть инициализированы моделью потоков подразделения.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | audiopolicy.h |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по