码迷,mamicode.com
首页 > 其他好文 > 详细

COM学习系列(一)

时间:2017-02-25 17:05:20      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:命令行   initial   export   对象   nbsp   src   idt   lex   指令   

技术分享

 

 

 

技术分享

进程内组件 进程外组件
直接指向组件程序的VTable
extern "C" _declspec(dllexport) int _stdcall MyFunction(int n);


可以按照函数的序号查找 在DEF文件中指名
也可以根据函数的名称查找
COM采用本地过程调用 和 远程过程调用
LPC RPC
LPC相当于RPC的一个优化实现
进程内组件效率低 但跨进程调用安全
全操作系统公用的信息仓库
实现COM库时必须同时定义出注册表的结构

HKEY_CLASSES_ROOT

自注册组件程序 非注册组件程序

只要进程内组件提供相应的入口函数
则RegSvr32 就可以完成注册或注销工作
支持自注册的进程外组件必须支持两个命令行参数 /RegServer 和 /UnregServer

调用COM库的函数进行组件对象的创建工作
CreateInstance
COM的创建函数根据注册表的信息并调用组件程序的入口函数创建组件

COM库在接到对象创建的指令后,它要调用进程内组件的DllGetClassObject函数
由该函数创建类厂对象 并返回类厂指针。COM库一旦有类厂的接口指针,他们就可以
通过类厂借口IClassFactory的成员函数CreateInstance创建相应的COM对象

在COM库中 有三个API函数可用于对象的创建 他们分别是 COGetClassObject,
CoCreateInstance,CoCreateInstanceEx 一般情况调用其中一个


1.CoInitialize 通常 一个进程对COM库只进行一次初始化
2.初始化完成 调用CoBuildVersion 获取COM库版本
3.COM库的终止函数 CoUninitalize

COM学习系列(一)

标签:命令行   initial   export   对象   nbsp   src   idt   lex   指令   

原文地址:http://www.cnblogs.com/yifi/p/6442140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!