com组件开发:原理与基础知识汇总(四) DllCanUnloadNow


DllCanUnloadNow (是否可卸载dll)

大部分com组件都可以看到有这个导出函数

因为应用程序可以定期调用 CoFreeUnusedLibraries 来释放资源。 而DllCanUnloadNow的返回值就决定了程序释放资源时,是否允许释放

返回S_OK 表示允许被释放

返回S_FALES表示不允许被释放

官方CoFreeUnusedLibraries函数解释:

卸载不再使用的任何 DLL,可能是因为 DLL 不再有任何实例化的 COM 对象未完成。

应用程序可以定期调用 CoFreeUnusedLibraries 来释放资源。 在消息循环的顶部或某些空闲时间任务中调用它是最高效的。 CoFreeUnusedLibraries 在内部调用 DllCanUnloadNow 以实现和导出该函数的 DLL。


扩展阅读:

CoFreeUnusedLibraries