IPart::RegisterControlChangeCallback 方法 (devicetopology.h)

RegisterControlChangeCallback 方法注册 IControlChangeNotify 接口,客户端实现该接口以接收此部分中的状态更改通知。

语法

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

参数

[in] riid

要监视控件更改的特定于函数的控件接口。 有关详细信息,请参阅“备注”。

[in] pNotify

指向客户端的 IControlChangeNotify 接口的 指针。 如果该方法成功,它将在客户端的 IControlChangeNotify 接口上调用 AddRef 方法。

返回值

如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。

返回代码 说明
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
若要获取部件的特定于函数的控件接口的接口 ID,请调用该部件的 IControlInterface::GetIID 方法。 若要获取特定于函数的控件接口类型的接口 ID,请使用 __uuidof 运算符。 例如, IAudioAutoGainControl 的接口 ID 定义如下:

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 在这种情况下,在 IPart 对象释放对 IControlChangeNotify 接口的引用之前,客户端不会调用 UnregisterControlChangeCallback,而 IPart 对象在客户端调用 UnregisterControlChangeCallback 之前不会释放其对 IControlChangeNotify 接口的引用。 有关 AddRefRelease 方法的详细信息,请参阅 Windows SDK 文档中有关 IUnknown 接口的讨论。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 devicetopology.h

另请参阅

IControlChangeNotify 接口

IControlInterface::GetIID

IPart 接口

IPart::UnregisterControlChangeCallback