IPart::UnregisterControlChangeCallback 方法 (devicetopology.h)

UnregisterControlChangeCallback 方法删除客户端之前通过调用 IPart::RegisterControlChangeCallback 方法注册的 IControlChangeNotify 接口的注册。

语法

HRESULT UnregisterControlChangeCallback(
  [in] IControlChangeNotify *pNotify
);

参数

[in] pNotify

指向要删除其注册的 IControlChangeNotify 接口的指针。 在上一次调用 IPart::RegisterControlChangeCallback 方法时,客户端将此相同的接口指针传递给了 part 对象。 如果 UnregisterControlChangeCallback 方法成功,它将在客户端的 IControlChangeNotify 接口上调用 Release 方法。

返回值

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

返回代码 说明
E_INVALIDARG
指针 pNotifyNULL
E_NOTFOUND
接口实例 *pNotify 当前未注册。

注解

在客户端释放对 IControlChangeNotify 接口的最终引用之前,它应调用 UnregisterControlChangeCallback 以取消注册接口。 否则,应用程序会泄漏 IControlChangeNotifyIPart 对象持有的资源。 请注意, IPart::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 接口

IPart 接口

IPart::RegisterControlChangeCallback