IPart::RegisterControlChangeCallback 方法 (devicetopology.h)
RegisterControlChangeCallback 方法注册 IControlChangeNotify 接口,客户端实现该接口以接收此部分中的状态更改通知。
语法
HRESULT RegisterControlChangeCallback(
[in] REFGUID riid,
[in] IControlChangeNotify *pNotify
);
参数
[in] riid
要监视控件更改的特定于函数的控件接口。 有关详细信息,请参阅“备注”。
[in] pNotify
指向客户端的 IControlChangeNotify 接口的 指针。 如果该方法成功,它将在客户端的 IControlChangeNotify 接口上调用 AddRef 方法。
返回值
如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。
返回代码 | 说明 |
---|---|
|
参数 riid 不是有效的控制接口标识符。 |
|
指针 pNotify 为 NULL。 |
注解
将参数 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
const IID IID_IAudioAutoGainControl __uuidof(IAudioAutoGainControl)
有关 __uuidof 运算符的详细信息,请参阅 Windows SDK 文档。
在客户端释放对 IControlChangeNotify 接口的最终引用之前,它应调用 IPart::UnregisterControlChangeCallback 方法来取消注册接口。 否则,应用程序会泄漏 IControlChangeNotify 和 IPart 对象持有的资源。 请注意, RegisterControlChangeCallback 调用客户端的 IControlChangeNotify::AddRef 方法, UnregisterControlChangeCallback 调用 IControlChangeNotify::Release 方法。 如果客户端在调用 UnregisterControlChangeCallback 之前释放对 IControlChangeNotify 接口的引用,则 IPart 对象永远不会释放其对 IControlChangeNotify 接口的引用。 例如,设计不佳的 IControlChangeNotify 实现可能会从 IControlChangeNotify 对象的析构函数调用 UnregisterControlChangeCallback。 在这种情况下,在 IPart 对象释放对 IControlChangeNotify 接口的引用之前,客户端不会调用 UnregisterControlChangeCallback,而 IPart 对象在客户端调用 UnregisterControlChangeCallback 之前不会释放其对 IControlChangeNotify 接口的引用。 有关 AddRef 和 Release 方法的详细信息,请参阅 Windows SDK 文档中有关 IUnknown 接口的讨论。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | devicetopology.h |