CoInitialize()与COM

转载 2013年12月05日 19:34:21

Coinitialize  参数为保留参数,必须为NULL

CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象。应用程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。  

返回值S_OK : 该线程中COM库初始化成功S_FALSE 该线程中COM库已经被初始化 CoInitialize () 标明以单线程方式创建。  使用 CoInitialize 创建可以使对象直接与线程连接,得到最高的性能。  

CoInitialize并不装载COM 库,它只用来初始化当前线程使用什么样的套间。使用这个函数后,线程就和一个套间建立了对应关系。线程的套间模式决定了该线程如何调用COM对象,是否需要列集等。  

CoInitialize ()并不会干扰客户和服务器之间的通信,它所做的事情是让线程注册一个套间,而线程运行过程中必然在此套间。   CoInitialize和CoUninitialize必须成对使用

在每个线程函数里,如果要使用COM对象就需要调用CoInitialize或CoInitializeEX 在线程退出的时候释放. 当然如果你的线程不需要COM对象,就没必调用.

COM(ComponentObjectModel,组件对象模型) 在Windows操作平台下,众多以COM形式提供的组件模块,如DirectX多媒体软件包、OLEDB/ADO数据库组件系统等,极大地丰富了操作系统的功能。由于COM机制允许任意两组件之间相互通信而不必关心是在何种计算机上的何种操作系统下运行,也不用关心组件是使用何种语言编制的,这使COM技术拥有了强大的生命力。尤其是Windows2000同COM的下一代产品COM+的结合更加紧密,将使COM/COM+技术得到更广泛的应用

 

 

初始化COM环境的目的是使调用COM的API工作正常,也就是在COM操作之前调用 ::CoInitialize或 ::CoInitializeEx就可以。位置不重要。

动态库的对话框中嵌入Com组件的问题

前些天做一个内嵌有IE控件的对话框,我把对话框类封装在一个MFC Regular DLL中。然后测试时发现对话框弹出后,怎么也不能显示出IE的控件。用同样的方法,直接把Dialog放在一个MFC AP...
  • guanzhongs
  • guanzhongs
  • 2006年04月29日 11:14
  • 2591

CoInitialize和CoUninitialize

CoInitialize  编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! CoInitialize是Windows提供的API函数,用来告诉 Win...
  • thanklife
  • thanklife
  • 2017年10月17日 10:58
  • 125

Delphi使用COM对象的时候是否需要CoInitialize

核心提示:MSDN上CoInitialize的解释:Initializes the COM library on the current apartment and identifies the co...
  • Hmillet
  • Hmillet
  • 2017年05月23日 20:03
  • 627

[Delphi-码农]Delphi 多线程 “尚未调用CoInitialize错误”的解决方法

http://www.cnblogs.com/zhangzhifeng/p/3319214.html 在Delphi  多线程中出现“尚未调用CoInitialize错误”的解决方法 ...
  • CrackLibby
  • CrackLibby
  • 2015年01月28日 14:26
  • 1890

多线程中对COM的初始化CoInitialize应该注意的问题

使用COM组件时,通常的做法是在main函数的最前面调用CoInitialize(NULL);,最后面调用CoUninitialize(); 今天遇到一个问题是在线程中使用COM组件失败了,我就怀疑...
  • mfcing
  • mfcing
  • 2015年04月18日 22:02
  • 4953

C++Builder中傻瓜式调用com组件。

最近在网上发现c++builder中提供的CreateOleObject类对于com组件的调用十分实用,下边是调用iTrusPTA.dll的一个示例;CoInitialize(NULL); Vari...
  • haijun286972766
  • haijun286972766
  • 2011年03月25日 15:56
  • 3452

ado的CoInitialize初始函数的使用?

       第一次打算使用ado进行数据库编程,我的程序是个对话框,当中的操作主要在一个工作线程中。开始的时候直接在OnInitDialog中使用CoInitialize(NULL)。问题就出来了,...
  • cmdn
  • cmdn
  • 2005年09月26日 22:00
  • 2428

ObjectArx ADO方式连接数据库

ADO在C++中的使用 最近程序中用到读写数据库,看了些例子,查了番MSDN,下面把详细步骤写出来,以备忘,或与同行共勉。 读写数据库的技术很多,现在多用ADO。ADO以COM方式...
  • Alexander_Frank
  • Alexander_Frank
  • 2016年09月01日 09:58
  • 376

QT调用COM组件

COM使用 首先调用 CoInitialize(NULL) 初始化COM库 CoCreateInstance(....) 创建COM对象并获得接口 使用使用释放C...
  • yedehei_lt
  • yedehei_lt
  • 2015年11月22日 05:32
  • 4060

COM原理

⊙ 第一章 概述===============================================================================   COM 是什么---...
  • armman
  • armman
  • 2007年06月10日 11:04
  • 2710
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CoInitialize()与COM
举报原因:
原因补充:

(最多只允许输入30个字)