Condividi tramite


Metodo IPart::RegisterControlChangeCallback (devicetopology.h)

Il metodo RegisterControlChangeCallback registra l'interfaccia IControlChangeNotify , che il client implementa per ricevere notifiche di modifiche dello stato in questa parte.

Sintassi

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

Parametri

[in] riid

Interfaccia di controllo specifica della funzione che deve essere monitorata per le modifiche del controllo. Per altre informazioni, vedere la sezione Osservazioni.

[in] pNotify

Puntatore all'interfaccia IControlChangeNotify del client. Se il metodo ha esito positivo, chiama il metodo AddRef sull'interfaccia IControlChangeNotify del client.

Valore restituito

Se il metodo ha esito positivo, viene restituito S_OK. Se ha esito negativo, i possibili codici restituiti includono, ma non sono limitati, i valori illustrati nella tabella seguente.

Codice restituito Descrizione
E_INVALIDARG
Il riid del parametro non è un identificatore di interfaccia di controllo valido.
E_POINTER
Pointer pNotify è NULL.

Commenti

Impostare il riid del parametro su uno dei valori GUID seguenti:

  • 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
Per ottenere l'ID interfaccia dell'interfaccia di controllo specifica della funzione per una parte, chiamare il metodo IControlInterface::GetIID della parte. Per ottenere l'ID interfaccia di un tipo di interfaccia di controllo specifico della funzione, usare l'operatore __uuidof . Ad esempio, l'ID interfaccia di IAudioAutoGainControl viene definito come segue:

const IID IID_IAudioAutoGainControl  __uuidof(IAudioAutoGainControl)

Per altre informazioni sull'operatore __uuidof , vedere la documentazione di Windows SDK.

Prima che il client rilasci il riferimento finale all'interfaccia IControlChangeNotify , deve chiamare il metodo IPart::UnregisterControlChangeCallback per annullare la registrazione dell'interfaccia. In caso contrario, l'applicazione perde le risorse contenute negli oggetti IControlChangeNotify e IPart . Si noti che RegisterControlChangeCallback chiama il metodo IControlChangeNotify::AddRef del client e UnregisterControlChangeCallback chiama il metodo IControlChangeNotify::Release . Se il client esegue un errore rilasciando il relativo riferimento all'interfaccia IControlChangeNotify prima di chiamare UnregisterControlChangeCallback, l'oggetto IPart non rilascia mai il riferimento all'interfaccia IControlChangeNotify . Ad esempio, un'implementazione IControlChangeNotify progettata in modo non adeguato potrebbe chiamare UnregisterControlChangeCallback dal distruttore per l'oggetto IControlChangeNotify . In questo caso, il client non chiamerà UnregisterControlChangeCallback finché l'oggetto IPart non rilascia il riferimento all'interfaccia IControlChangeNotify e l'oggetto IPart non rilascia il relativo riferimento all'interfaccia IControlChangeNotify finché il client non chiama UnregisterControlChangeCallback. Per altre informazioni sui metodi AddRef e Release , vedere la discussione sull'interfaccia IUnknown nella documentazione di Windows SDK.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione devicetopology.h

Vedi anche

Interfaccia IControlChangeNotify

IControlInterface::GetIID

Interfaccia IPart

IPart::UnregisterControlChangeCallback