Método IAudioEndpointVolume::RegisterControlChangeNotify (endpointvolume.h)

O método RegisterControlChangeNotify registra a interface de retorno de chamada de notificação de um cliente.

Sintaxe

HRESULT RegisterControlChangeNotify(
  [in] IAudioEndpointVolumeCallback *pNotify
);

Parâmetros

[in] pNotify

Ponteiro para a interface IAudioEndpointVolumeCallback que o cliente está registrando para retornos de chamada de notificação. Se o método RegisterControlChangeNotify for bem-sucedido, ele chamará o método AddRef na interface IAudioEndpointVolumeCallback 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 pNotify é NULL.

Comentários

Esse método registra uma interface IAudioEndpointVolumeCallback a ser chamada pelo sistema quando o nível de volume ou o estado de mudo de um ponto de extremidade é alterado. O chamador implementa a interface IAudioEndpointVolumeCallback .

Quando as notificações não são mais necessárias, o cliente pode chamar o método IAudioEndpointVolume::UnregisterControlChangeNotify para encerrar as notificações.

Antes que o cliente libere sua referência final para a interface IAudioEndpointVolumeCallback , ele deve chamar UnregisterControlChangeNotify para cancelar o registro da interface. Caso contrário, o aplicativo vazará os recursos mantidos pelos objetos IAudioEndpointVolumeCallback e IAudioEndpointVolume . Observe que RegisterControlChangeNotify chama o método IAudioEndpointVolumeCallback::AddRef do cliente e UnregisterControlChangeNotify chama o método IAudioEndpointVolumeCallback::Release . Se o cliente erra liberando sua referência à interface IAudioEndpointVolumeCallback antes de chamar UnregisterControlChangeNotify, o objeto IAudioEndpointVolume nunca libera sua referência à interface IAudioEndpointVolumeCallback . Por exemplo, uma implementação de IAudioEndpointVolumeCallback mal projetada pode chamar UnregisterControlChangeNotify do destruidor para o objeto IAudioEndpointVolumeCallback . Nesse caso, o cliente não chamará UnregisterControlChangeNotify até que o objeto IAudioEndpointVolume libere sua referência à interface IAudioEndpointVolumeCallback e o objeto IAudioEndpointVolume não libere sua referência à interface IAudioEndpointVolumeCallback até que o cliente chame UnregisterControlChangeNotify. 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 UnregisterControlChangeNotify antes de liberar a referência final para o objeto IAudioEndpointVolume . Caso contrário, o objeto 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 o objeto IAudioEndpointVolume existir.

Para obter um exemplo de código que chama RegisterControlChangeNotify, consulte Controles de volume de ponto de extremidade.

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 endpointvolume.h

Confira também

IAudioEndpointVolume Interface

IAudioEndpointVolume::UnregisterControlChangeNotify

IAudioEndpointVolumeCallback Interface