iHolder::Close 方法 (comsvcs.h)

关闭持有者。

语法

HRESULT Close();

返回值

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

这会关闭资源分配器的持有者,之后资源分配器可能会释放。

在关闭之前,通过回调资源分配器的 IDispenserDriver::D estroyResource 方法销毁所有剩余清单。

以下顺序介绍如何关闭资源分配器:

  1. 获取对资源分配器的引用 (公开 IDispenserDriver) 的对象。
  2. 在实现调用 IHolder::Close 的资源分配器中调用方法。
  3. IHolder::Close 通过回调 Resource 分配器的 IDispenserDriver::D estroyResource 方法销毁所有剩余清单。
  4. IHolder::Close 调用分配器管理器以从持有者列表中删除此持有者。 (如果没有保留者,则分配器管理器对象将删除自身。)
  5. IHolder::Close 发布对 Resource 分配器的 IDispenserDriver 接口的引用。 这就是在步骤 1 中需要引用的原因;否则,资源分配器会提前删除自身,然后才能完成后续步骤。
  6. IHolder::Close 返回到资源分配器。
  7. 资源分配器调用 IDispenserDriver::D estroyResource。 持有者现在删除自身。
  8. 步骤 2 中调用的方法现在返回。
  9. 释放对资源分配器的最终引用,该资源分配器现在会自行删除。
请注意,IDispenserManager::RegisterDispenser 方法不对其 pDispenserDriver 对象调用 AddRef,但 IHolder::ClosepDispenserDriver 执行 Release。 这可能会导致资源分配器对象过早销毁。 若要防止这种过早销毁, IHolder::Close 的调用方必须保留对资源分配器对象的引用,如步骤 1 和 5 中所述。

要求

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

另请参阅

IDispenserDriver

IDispenserManager

IHolder