Метод 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 |