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


Метод IAudioSessionEvents::OnSessionDisconnected (audiopolicy.h)

Метод OnSessionDisconnected уведомляет клиента о том, что звуковой сеанс отключен.

Синтаксис

HRESULT OnSessionDisconnected(
  [in] AudioSessionDisconnectReason DisconnectReason
);

Параметры

[in] DisconnectReason

Причина отключения звукового сеанса. Вызывающий объект задает этому параметру одно из значений перечисления AudioSessionDisconnectReason , показанных в следующей таблице.

Значение Описание
DisconnectReasonDeviceRemoval Пользователь удалил устройство конечной точки звука.
DisconnectReasonServerShutdown Служба звука Windows остановлена.
DisconnectReasonFormatChanged Изменен формат потока для устройства, к которому подключен звуковой сеанс.
DisconnectReasonSessionLogoff Пользователь выполнил выход из сеанса служб Терминал Windows (WTS), в котором выполнялся звуковой сеанс.
DisconnectReasonSessionDisconnected Сеанс WTS, в котором выполнялся звуковой сеанс, был отключен.
DisconnectReasonExclusiveModeOverride Аудиосеанс (в общем режиме) был отключен, чтобы сделать устройство конечной точки звука доступным для подключения в монопольном режиме.
 

Дополнительные сведения о сеансах WTS см. в документации по Windows SDK.

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

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

Комментарии

При отключении сеанса диспетчер сеансов закрывает потоки, принадлежащие к сеансу, и делает недействительными все невыполненные запросы для служб в этих потоках. Клиент должен реагировать на отключение, освобождая все его ссылки на интерфейс IAudioClient для закрытого потока и освобождая все ссылки на интерфейсы служб, полученные ранее с помощью вызовов метода IAudioClient::GetService .

После отключения многие методы в интерфейсах WASAPI, привязанные к закрытым потокам в отключенном сеансе, возвращают код ошибки AUDCLNT_E_DEVICE_INVALIDATED (например, см. раздел IAudioClient::GetCurrentPadding). Сведения о восстановлении после этой ошибки см. в разделе Восстановление после ошибки Invalid-Device.

Если аудиослужба Windows неожиданно завершает работу, она не имеет возможности уведомлять клиентов о завершении работы. В этом случае клиенты узнают, что служба остановлена при вызове метода , например IAudioClient::GetCurrentPadding , который обнаруживает, что служба больше не работает и завершается сбоем с кодом ошибки AUDCLNT_E_SERVICE_NOT_RUNNING.

Клиент не может создать событие, отключенное от сеанса. Система всегда является источником событий этого типа. Таким образом, в отличие от некоторых других методов IAudioSessionEvents , этот метод не имеет параметра контекста.

Пример кода, реализующий методы в интерфейсе IAudioSessionEvents , см. в разделе События аудиосеанса.

Требования

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

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

Интерфейс IAudioClient

IAudioClient::GetService

Интерфейс IAudioSessionEvents