COM笔记1

1.IID:Interface indentifier  

CLSID:class indentifier  GUID  

 GUID:global unique indentifier  

GUID是一个16字节长的结构,它用于标示Class的时候,就是CLSID,用于标示接口的时候,就是IID。  

 比如接口INSSBuffer有一个表示它的GUID:E1CD3524_11D2_9EED_......  

而IID_+接口名用于字母表示接口,他们三者一一对应,如IDD_INSSBuffer  

 UUID: Universally Unique Identifier,它是生成唯一标示符的标准,GUID是它的一个应用

  2 com接口(抽象类)不能有任何数据成员  

3.com中的接口就是一个抽象类,component(组件)相当于object,用户不能直接访问类对象(即object,component),只能访问它的接口,所有COM组件对外提供的都是   接口,不是类。    

 HRESULT hr = CoCreateInstance(CLSID_Object,NULL,CLSCTX_INPROC_SERVER,IID_IUnknown,(void **) &pUnk)  

 CLSID_Object:用来唯一标识一个对象的CLSID(128位)。

  CLSCTX_INPROC_SERVER:调用进程内服务  

 IID_IUnknown:返回pUnk的类型,在CLSID_Object中实现  

 pUnk:用于返回一个CLSID_Object对象,它仅代表其中的IID_IUnknown接口部分,接口本身是由一个指针管理的,所以返回一个指向指针的指针。

5.com:组件对象模型(Component Object Model)

6.com技术是ole,activex的基础,com是技术,ole,activex是建立在其上的应用

7.由于所有COM对象必须具备的两大特性:引用计数(addref和release)和多接口(QUERYINTERFACE),

COM定义了一个叫做INUKNOWN的标准接口:

CLASS INUKNOWN 

{ PUBLIC:

VIRTUAL HRESULT QUERYINTERFACE(RIID RIID, VOID **PPOBJ)==0;

VIRTUAL ULONG ADDREF()=0;

VIRTUAL ULONG RELEASE()=0;

};

所有COM接口继承自它

 

8.如果类实现了多个接口,可以返回不同接口对象以调用不同接口里的方法

 

9.在C++内部,虚函数是用虚函数表来记录的,所以指向接口的指针实际上是一个指向指针的指针。

 

10.HRESULT是一个long型的数值,不是句柄

 

11.COM组件分为进程内组件,本地进程组件,远程组件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值