Método IAudioSessionEvents::OnSessionDisconnected (audiopolicy.h)

O método OnSessionDisconnected notifica o cliente de que a sessão de áudio foi desconectada.

Sintaxe

HRESULT OnSessionDisconnected(
  [in] AudioSessionDisconnectReason DisconnectReason
);

Parâmetros

[in] DisconnectReason

O motivo pelo qual a sessão de áudio foi desconectada. O chamador define esse parâmetro como um dos valores de enumeração AudioSessionDisconnectReason mostrados na tabela a seguir.

Valor Descrição
DisconnectReasonDeviceRemoval O usuário removeu o dispositivo de ponto de extremidade de áudio.
DisconnectReasonServerShutdown O serviço de áudio do Windows parou.
DisconnectReasonFormatChanged O formato de fluxo foi alterado para o dispositivo ao qual a sessão de áudio está conectada.
DisconnectReasonSessionLogoff O usuário desconectou a sessão do WTS (Serviços de Terminal do Windows) na qual a sessão de áudio estava sendo executada.
DisconnectReasonSessionDisconnected A sessão do WTS na qual a sessão de áudio estava sendo executada foi desconectada.
DisconnectReasonExclusiveModeOverride A sessão de áudio (modo compartilhado) foi desconectada para disponibilizar o dispositivo de ponto de extremidade de áudio para uma conexão de modo exclusivo.
 

Para obter mais informações sobre sessões do WTS, consulte a documentação do SDK do Windows.

Retornar valor

Se o método for bem-sucedido, retornará S_OK. Se falhar, retornará um código de erro.

Comentários

Ao desconectar uma sessão, o gerenciador de sessão fecha os fluxos que pertencem a essa sessão e invalida todas as solicitações pendentes de serviços nesses fluxos. O cliente deve responder a uma desconexão liberando todas as suas referências à interface IAudioClient para um fluxo fechado e liberando todas as referências às interfaces de serviço obtidas anteriormente por meio de chamadas para o método IAudioClient::GetService .

Após a desconexão, muitos dos métodos nas interfaces WASAPI que estão vinculados a fluxos fechados na sessão desconectada retornam código de erro AUDCLNT_E_DEVICE_INVALIDATED (por exemplo, consulte IAudioClient::GetCurrentPadding). Para obter informações sobre como se recuperar desse erro, consulte Recuperando-se de um erro de Invalid-Device.

Se o serviço de áudio do Windows terminar inesperadamente, ele não terá a oportunidade de notificar os clientes de que ele está sendo desligado. Nesse caso, os clientes aprendem que o serviço parou quando chamam um método como IAudioClient::GetCurrentPadding que descobre que o serviço não está mais em execução e falha com o código de erro AUDCLNT_E_SERVICE_NOT_RUNNING.

Um cliente não pode gerar um evento desconectado da sessão. O sistema é sempre a origem desse tipo de evento. Portanto, ao contrário de alguns outros métodos IAudioSessionEvents , esse método não tem um parâmetro de contexto.

Para obter um exemplo de código que implementa os métodos na interface IAudioSessionEvents , consulte Eventos de sessão de áudio.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho audiopolicy.h

Confira também

IAudioClient Interface

IAudioClient::GetService

IAudioSessionEvents Interface