----CoInitialize 和 CoUninitialize 的调用时机问题
参考《》 CoInitialize 和 CoUninitialize最近有个东西,需要读 XML 配置文件,于是用 msxml 做了。msxml 是基于 COM 的,使用之前需要 CoInitialize,使用之后需要 CoUninitialize。于是我写成了:
刚才我正乐此不彼的把类似这样的东西改成:
我和同事的讨论前面的同事过来看到了,说:你不该在这里调用 CoInitialize 和 CoUninitialize。如果有的地方也在用 COM,你这里 CoUninitialize 一下,别的地方就会出错了,上次的某个 Bug 就是。 我狡辩道:我假定这里没有多线程环境(实际上也是),并且约定别的地方用 COM 的时候调用 CoInitialize 时不要判断返回值。 同事:应该和大众习惯保持一致,最好就是全项目最开始的时候 CoInitialize 一次,结束的时候 CoUninitialize 一次。 我:我这里是较底层功能函数。 同事:可以以文档的方式注明,使用该模块前必须自己 CoInitialize,使用完毕后自己 CoUninitialize。 我:我只是想要用起来方便一点,用的时候不要有那么多先决条件和后置条件。再说,人家本来可以不知道我用了 COM,我这么一说明,就暴露了内部信息了不是? 其实我被动摇了。 各位大大,你们怎么处理呢?------------------------------华丽的分割线(13:27 p.m. 增加)---------------------------------- 好,既然 CoInitialize 和 CoUninitialize 有引用计数机制,那么这个具体问题已经解决。 那么,有没有类似的成对使用的 API,会对进程全局产生影响的呢?如果有,在底层要用到的时候该怎么处理? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |