winapi - 两次调用 CoInitialize()

标签 winapi com

假设我的应用程序在启动时调用 CoInitialize,并在存在之前调用 CoUninitialize。

假设我的应用程序使用了一个第三方组件并执行类似的操作,这会导致某种失败吗?

当 CoInitialize 调用已经提交后,可以调用它吗?第二次调用会失败吗?或者它只是“让它通过”,因为它已经被调用了。

最佳答案

如果已在调用线程中初始化,

CoInitialize 将返回 S_FALSE。但是,对于返回 S_OKS_FALSE 的调用,都需要进行 CoUninitialize 调用。系统会计算对该函数的调用次数,并且只有当 CoUninitialize 的次数等于 CoInitialize 的次数时,它才会真正取消初始化。

所以总而言之,第二次调用是无害的,多次调用这对函数也没有问题。

关于winapi - 两次调用 CoInitialize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824383/

相关文章:

ms-access - Access MS Access 应用程序中的原始代码

c# - 无法在 COM 客户端中添加对 COM 的引用?

windows - 在 Win32 应用程序中模仿 Acrylic

c++ - 为什么 IUnknown 类中的方法声明为 __stdcall

winapi - CreateProcess 和奇怪的 nslookup 错误

c++ - 在不移动末尾的情况下删除文件中间的字节?

c++ - 在 idl 中使用 importlib 时,自动生成的 .tlh 中的编译器错误 C3646 'unknown override specifier'

c++ - COM 函数产生不会消失的线程

delphi - 如何在Delphi中引入前端或启动浏览器

c++ - 在作为函数参数的句柄上调用 CloseHandle?