ISurrogate::FreeSurrogate 方法 (objidlbase.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 |
标头 | objidlbase.h (包括 ObjIdl.h) |