Método IPart::RegisterControlChangeCallback (devicetopology.h)

O método RegisterControlChangeCallback registra a interface IControlChangeNotify, que o cliente implementa para receber notificações de status alterações nesta parte.

Sintaxe

HRESULT RegisterControlChangeCallback(
  [in] REFGUID              riid,
  [in] IControlChangeNotify *pNotify
);

Parâmetros

[in] riid

A interface de controle específica da função que deve ser monitorada quanto a alterações de controle. Para obter mais informações, consulte Comentários.

[in] pNotify

Ponteiro para a interface IControlChangeNotify do cliente. Se o método for bem-sucedido, ele chamará o método AddRef na interface IControlChangeNotify 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_INVALIDARG
O parâmetro riid não é um identificador de interface de controle válido.
E_POINTER
O ponteiro pNotify é NULL.

Comentários

Defina o parâmetro riid como um dos seguintes valores de GUID:

  • IID_IAudioAutoGainControl
  • IID_IAudioBass
  • IID_IAudioChannelConfig
  • IID_IAudioInputSelector
  • IID_IAudioLoudness
  • IID_IAudioMidrange
  • IID_IAudioMute
  • IID_IAudioOutputSelector
  • IID_IAudioPeakMeter
  • IID_IAudioTreble
  • IID_IAudioVolumeLevel
  • IID_IDeviceSpecificProperty
  • IID_IKsFormatSupport
  • IID_IKsJackDescription
Para obter a ID da interface de controle específica da função para uma parte, chame o método IControlInterface::GetIID da parte. Para obter a ID da interface de um tipo de interface de controle específico da função, use o operador __uuidof . Por exemplo, a ID de interface de IAudioAutoGainControl é definida da seguinte maneira:

const IID IID_IAudioAutoGainControl  __uuidof(IAudioAutoGainControl)

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

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

Requisitos

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

Confira também

IControlChangeNotify Interface

IControlInterface::GetIID

IPart Interface

IPart::UnregisterControlChangeCallback