CoCreateInstance用法.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CoCreateInstance用法

CoCreateInstance 2008-09-25 13:33:44 标签:COM COM客户端感兴趣的是它可以调用的函数,在COM中,你可以通过接口来访问一套有用的函数。接口最简单的形式就是函数的一个集合。当我们得到COM服务器的一个接口时,我们就得到了一个指向一套函数的指针。   通过调用CoCreateInstance()函数,你就可以得到一个接口的指针。这是一个非常强大的函数,它可与COM子系统进行交互,并做以下的事情:   查找服务器   开始、载入或者连接到服务器   在服务器端创建一个COM对象   返回指向COM对象接口的一个指针   对于查找和访问接口,有两种数据类型是很重要的,它们是:CLSID和IID。它们都是Globally Unique IDs (GUIDs)。GUIDs用作唯一辨认所有的COM类和接口。   为了得到某个特别的类和接口,你需要它的GUID。要得到GUID,有许多方法。通常我们可以由服务器的头文件得到CLSID和IID。在我们的例子中,我们在源代码的开始部分使用#defind语句定义了GUID。通过接口的一般名字来查找GUID也很方便的。   让我们得到接口指针的函数是CoCreateInstance。 hr = CoCreateInstance( CLSID_BeepObj, // COM class id NULL, // outer unknown CLSCTX_INPROC_SERVER, // server INFO IID_IBeepObj, // interface id (void**)IBeep ); // pointer to inter   第一个参数是一个GUID,它可唯一指定客户端需要使用的COM类。GUID或者CLSID是COM类的标识符。世界上的每个COM类都有自己唯一的CLSID。COM将使用该ID来查找可产生请求COM对象的服务器。一旦连接到服务器,将会创建该对象。   第二个参数是一个指针,它指向“outer unknown”。我们不会使用这个参数,因此传送一个NULL。在涉及到“aggregation”(集合)概念时,outer unknown是很重要的。aggregation可让一个接口直接调用另一个COM接口而无需通知客户端。aggregation和containment是接口用来调用其它接口的两个方法。   第三个参数定义COM类的Context或者CLSCTX。该参数控制服务器的范围。我们可以通过它来控制服务器是进程内的服务器,还是一个EXE或者是在远程的计算机上。CLSCTX是一个位掩码,因此你可以混合几个值。这里我们使用的是CLSCTX_INPROC_SERVER--该服务器将运行在本地的计算机,并且作为一个DLL连接到客户。由于进程内的服务器是最容易实现的,因此我们在这个例子中选用它来讲解。   通常客户端都不用关心服务器是如何实现的。这时它将使用CLSCTX_SERVER的值,该服务器可以是一个本地的或者是进程内的。   接着是接口的标识符或者IID。这是另一个GUID--用来标识我们请求的接口。我们请求的IID必须是存在的,即被由CLSID指定的COM类支持。再次,IID的值通常由一个头文件提供,或者使用接口名查找出来。   最后的参数是指向一个接口的指针。CoCreateInstance() 将创建所请求的类对象和接口,并且返回一个指向接口的指针。这个参数也是CoCreateInstance调用的目的。然后我们就可以使用该接口指针来调用服务器上方法。 COM笔记-CoCreateInstance?? 2010-06-11 23:39:00|??分类: COM/ATL |??标签: |字号大中小?订阅 CoCreateInstance CoCreateInstance函数。 在COM库中包含一个用于创建组件的名为CoCreateInstance的函数。此函数需要一个CLSID参数,在此基础上创建相应组件的一个实例,并返回此组件的某个接口。 ? CoCreateInstance?的声明 HRESULT?_stdcall??CoCreateInstance(REFCLSID?rclsid, ????????????????????????LPUNKNOWN?pUnkOuter, ????????????????????????DWORD?dwClsContext, ????????????????????????REFIID?riid, ????????????????????????LPVOID?*?ppv); ? 第一个参数:待创建组件的CLSID。 第二个参数:用于聚合组件。 第三个参数

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档