Share via


Método IAudioSessionManager2::RegisterSessionNotification (audiopolicy.h)

O método RegisterSessionNotification registra o aplicativo para receber uma notificação quando uma sessão é criada.

Sintaxe

HRESULT RegisterSessionNotification(
  IAudioSessionNotification *SessionNotification
);

Parâmetros

SessionNotification

Um ponteiro para a implementação do aplicativo da interface IAudioSessionNotification . Se a chamada de método for bem-sucedida, ela chamará o método AddRef na interface IAudioSessionNotification do aplicativo.

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.

Valor retornado Descrição
E_POINTER
SessionNotification é NULL.
E_OUTOFMEMORY
O objeto interno não pôde ser criado devido à memória insuficiente.

Comentários

O aplicativo pode se registrar para receber uma notificação quando uma sessão é criada, por meio dos métodos da interface IAudioSessionNotification . O aplicativo implementa a interface IAudioSessionNotification . Os métodos definidos nessa interface recebem retornos de chamada do sistema quando uma sessão é criada. Por exemplo, código que mostra como implementar essa interface, consulte

Interface IAudioSessionNotification.

Para começar a receber notificações, o aplicativo chama o método IAudioSessionManager2::RegisterSessionNotification para registrar sua interface IAudioSessionNotification . Quando o aplicativo não exige mais notificações, ele chama o método IAudioSessionManager2::UnregisterSessionNotification para excluir o registro.

Importante

Você deve chamar IAudioSessionEnumerator::GetCount para começar a receber notificações. A API de enumeração de sessão descarta novas notificações de sessão até que o aplicativo tenha recuperado pela primeira vez a lista de sessões existentes. Isso é para evitar uma condição de corrida que pode ocorrer quando uma notificação de sessão chega enquanto o aplicativo que usa as APIs de sessão está sendo iniciado. Chamar GetCount dispara a API de enumeração para começar a enviar notificações de sessão.

Nota Certifique-se de que o aplicativo inicialize COM com o modelo MTA (Multithreaded Apartment) chamando CoInitializeEx(NULL, COINIT_MULTITHREADED) em um thread que não seja de interface do usuário. Se o MTA não for inicializado, o aplicativo não receberá notificações de sessão do gerenciador de sessão. Os threads que executam a interface do usuário de um aplicativo devem ser inicializados no modelo de threading apartment.
 

Requisitos

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

Confira também

IAudioSessionManager2