ISurrogate::FreeSurrogate 方法 (objidl.h)

卸载 DLL 服务器。

语法

HRESULT FreeSurrogate();

返回值

此方法可返回标准返回值E_UNEXPECTED、E_FAIL和S_OK。

注解

当代理进程中没有更多 DLL 服务器运行时,COM 将调用 FreeSurrogate 。 调用 FreeSurrogate 时, 方法必须正确撤销在代理项中注册的所有类工厂,然后导致代理项进程退出。

代理进程必须定期调用 CoFreeUnusedLibraries 函数,以卸载不再使用的 DLL 服务器。 代理过程承担此责任,这通常是客户的责任。 CoFreeUnusedLibraries 在任何加载的 DLL 服务器上调用 DllCanUnloadNow 函数。 由于 CoFreeUnusedLibraries 依赖于 DLL 服务器中 DllCanUnloadNow 的存在和正确实现,因此不能保证卸载所有应卸载的 DLL 服务器 -- 不是每个服务器都实现 DllCanUnloadNow,并且此函数对于自由线程 DLL 不可靠。 此外,当所有 DLL 服务器都消失时,代理项无法收到通知。 但是,COM 可以确定何时卸载了所有 DLL 服务器,然后将调用 FreeSurrogate 方法。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 objidl.h (包括 ObjIdl.h)

另请参阅

DllSurrogate

ISurrogate

编写自定义代理项