共用方式為


IPart::RegisterControlChangeCallback 方法 (devicetopology.h)

RegisterControlChangeCallback 方法會註冊 IControlChangeNotify 介面,用戶端會實作此介面,以接收此部分的狀態變更通知。

語法

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

參數

[in] riid

要監視控件變更的函式特定控制項介面。 如需詳細資訊,請參閱<備註>。

[in] pNotify

用戶端 IControlChangeNotify 介面的指標。 如果方法成功,它會在用戶端的 IControlChangeNotify 介面上呼叫 AddRef 方法。

傳回值

如果方法成功,它會傳回 S_OK。 如果失敗,可能的傳回碼包括,但不限於下表所示的值。

傳回碼 Description
E_INVALIDARG
參數 riid 不是有效的控制介面識別碼。
E_POINTER
指標 pNotifyNULL

備註

將參數 riid 設定為下列其中一個 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
若要取得元件之函式特定控件介面的介面標識碼,請呼叫元件的 IControlInterface::GetIID 方法。 若要取得函式特定控制項介面類型的介面識別碼,請使用 __uuidof 運算元。 例如, IAudioAutoGainControl 的介面標識碼定義如下:

const IID IID_IAudioAutoGainControl  __uuidof(IAudioAutoGainControl)

如需 __uuidof 運算符的詳細資訊,請參閱 Windows SDK 檔。

在客戶端釋放 IControlChangeNotify 介面的最終參考之前,它應該呼叫 IPart::UnregisterControlChangeCallback 方法來取消註冊介面。 否則,應用程式會洩漏 IControlChangeNotifyIPart 物件所持有的資源。 請注意, RegisterControlChangeCallback 會呼叫用戶端的 IControlChangeNotify::AddRef 方法,而 UnregisterControlChangeCallback 會呼叫 IControlChangeNotify::Release 方法。 如果在呼叫 UnregisterControlChangeCallback 之前釋放對 IControlChangeNotify 介面的參考,則 IPart 對象永遠不會釋放對 IControlChangeNotify 介面的參考。 例如,設計不佳的 IControlChangeNotify 實作可能會從 IControlChangeNotify 物件的解構函式呼叫 UnregisterControlChangeCallback。 在此情況下,用戶端不會呼叫 UnregisterControlChangeCallback ,直到 IPart 對象釋放對 IControlChangeNotify 介面的參考, 而 IPart 物件將不會釋放其 IControlChangeNotify 介面的參考,直到用戶端呼叫 UnregisterControlChangeCallback 為止。 如需 AddRefRelease 方法的詳細資訊,請參閱 Windows SDK 檔中的 IUnknown 介面討論。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 devicetopology.h

另請參閱

IControlChangeNotify 介面

IControlInterface::GetIID

IPart 介面

IPart::UnregisterControlChangeCallback