com组件相关基础知识

1.  简单来说,COM是一类系统应用程序接口(API)。

允许你的应用程序访问其他应用程(EXE)或动态链接库(DLL)中的数据和函数。它事实上提供了一种C/S标准。    

COM是Component Object Model的简称,其基本思想是试图像搭建计算机硬件设备那样搭建软件。  


 2. C++如何使用COM  
(1) 调用 COM API 接口::CoCreateInstance()。 
(2) 在系统注册表中记录  
(3) 装载DLL,或者通过远程过程调用API启动相应的EXE文件。 
(4) 在创建对象后,::CoCreateInstance()返回该对象的指针。 
(5) 使用通过指针  
(6) 消灭则引用计数-1,为0则COM真的消灭对象。 

(7) 释放资源,如DLL


3.什么是GUID  
开放软件组织OSF提出了统一唯一标识UUID, GUID是微软公司对此的解释。
一个GUID是一个128位长的数,从理论上说在整个空间和时间维上它是唯一的。
为了保证它在空间维上唯一,GUID中有一些特定的位来记录它是由哪个机器产生的,
它通常是该机器的网卡地址,如果这台机器上没有网卡,会使用另一个常数。  
为了保证在时间维上唯一,GUID包含了一个时间戳,用来记录它生成的时间。
这个时间戳的范围是从1490年开始到生成该GUID时的时间为止,以分钟为单位。  
另外,GUID还包含了一个随机产生数。 GUID的格式为: 
rrrrrrrr-tttt-tttt-oooo-aa-aa-aa-aa-aa-aa 
其中:  
rrrrrrrr: 32位长的随机数  
tttt-tttt: 时间戳,其中低16位字在前; 
oooo: 与机器重启次数有关  
aa-aa-aa-aa-aa-aa: 一个6字节长的字符串,一般是机器的网卡地址 


4.  创建一个COM对象时需要两个ID  
(1) 类ID -- CLSID, 用来表示DLL或EXE文件 
(2) 接口ID – IID, 用来指示所要创建的对象的类。   


5.系统注册表  
(1)COM的信息可以在系统注册表中的HKEY_CLASSES_ROOT键下找到,
这个键其实指向的是HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES键下的内容。 
大部分是扩展名和实际应用程序的对应,也有:
AppId  
CLSID—128 bits Key  
Interface IID -- 128 bits Key


6.利用com组件进行通信




7.  COM术语  
(1) 把COM DLL称为,在进程中。 
(2) 把COM EXE称为,在进程外。  
(3) 把本地系统执行的COM EXE称为, 本地服务器  
(4) 把在别的系统里执行的COM EXE称为, 远程服务器 ---- DCOM,分布式COM技术。   


8.怎样消灭COM对象  
(1)引用计数,目的是让对象能够自己维护自己,在通知销毁时,判断是不是该释放资源。 
(2)但是如果调用进程终止,COM也会销毁被该进程调用的COM对象。   


9.怎样用C++写一个 COM类  
(1)对于COM类,要把成员定义在一个叫做 ---- 接口定义语言 IDL,的地方。 
(2)  MyInterface的IDL编译后产生: 
MyInterface.h 
MyInterface_i.c 
MyInterface_p.c 
dlldata.c 
MyInterface.tlb   


10.使用MFC或者ATL来创建COM类   


11.什么是服务控制器



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值