Share via


Método IAudioSessionControl::RegisterAudioSessionNotification (audiopolicy.h)

O método RegisterAudioSessionNotification registra o cliente para receber notificações de eventos de sessão, incluindo alterações no estado do fluxo.

Sintaxe

HRESULT RegisterAudioSessionNotification(
  [in] IAudioSessionEvents *NewNotifications
);

Parâmetros

[in] NewNotifications

Ponteiro para uma interface IAudioSessionEvents implementada pelo cliente. Se o método for bem-sucedido, ele chamará o método AddRef na interface IAudioSessionEvents do cliente.

Retornar valor

Se o método for bem-sucedido, retornará S_OK. Se falhar, os códigos de retorno possíveis incluem, mas não se limitam a, os valores mostrados na tabela a seguir.

Código de retorno Descrição
E_POINTER
O parâmetro NewNotifications é NULL.
AUDCLNT_E_DEVICE_INVALIDATED
O dispositivo de ponto de extremidade de áudio foi desconectado ou o hardware de áudio ou os recursos de hardware associados foram reconfigurados, desabilitados, removidos ou indisponíveis para uso.
AUDCLNT_E_SERVICE_NOT_RUNNING
O serviço de áudio do Windows não está em execução.

Comentários

Esse método passa uma interface IAudioSessionEvents implementada pelo cliente para o gerenciador de sessão. Após uma chamada bem-sucedida para esse método, o gerenciador de sessão chama os métodos na interface IAudioSessionEvents para notificar o cliente de vários eventos de sessão. Por meio desses métodos, o cliente recebe notificações dos seguintes eventos relacionados à sessão:

  • Alterações de nome de exibição
  • Alterações no nível do volume
  • Alterações de estado de sessão (inativas para ativas ou ativas para inativas)
  • Agrupando alterações de parâmetro
  • Desconexão do cliente da sessão (causada pelo usuário removendo o dispositivo de ponto de extremidade de áudio, desligando o gerenciador de sessão ou alterando o formato de fluxo)
Quando as notificações não são mais necessárias, o cliente pode chamar o método IAudioSessionControl::UnregisterAudioSessionNotification para encerrar as notificações.

Antes que o cliente libere sua referência final à interface IAudioSessionEvents , ele deve chamar UnregisterAudioSessionNotification para cancelar o registro da interface. Caso contrário, o aplicativo vazará os recursos mantidos pelos objetos IAudioSessionEvents e IAudioSessionControl . Observe que RegisterAudioSessionNotification chama o método IAudioSessionEvents::AddRef do cliente e UnregisterAudioSessionNotification chama o método IAudioSessionEvents::Release . Se o cliente errar liberando sua referência à interface IAudioSessionEvents antes de chamar UnregisterAudioSessionNotification, o gerenciador de sessão nunca liberará sua referência à interface IAudioSessionEvents . Por exemplo, uma implementação de IAudioSessionEvents mal projetada pode chamar UnregisterAudioSessionNotification do destruidor para o objeto IAudioSessionEvents . Nesse caso, o cliente não chamará UnregisterAudioSessionNotification até que o gerenciador de sessão libere sua referência à interface IAudioSessionEvents e o gerenciador de sessão não liberará sua referência à interface IAudioSessionEvents até que o cliente chame UnregisterAudioSessionNotification. Para obter mais informações sobre os métodos AddRef e Release , consulte a discussão sobre a interface IUnknown na documentação do SDK do Windows.

Além disso, o cliente deve chamar UnregisterAudioSessionNotification antes de liberar todas as suas referências para os objetos IAudioSessionControl e IAudioSessionManager . A menos que o cliente mantenha uma referência a pelo menos um desses dois objetos, o gerenciador de sessão vazará o armazenamento alocado para armazenar as informações de registro. Depois de registrar uma interface de notificação, o cliente continuará recebendo notificações apenas enquanto pelo menos um desses dois objetos existir.

Para obter um exemplo de código que chama o método RegisterAudioSessionNotification , consulte Eventos de áudio para aplicativos de áudio herdados.

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

IAudioSessionControl Interface

IAudioSessionControl::UnregisterAudioSessionNotification

IAudioSessionEvents Interface

IAudioSessionManager