码迷,mamicode.com
首页 > 编程语言 > 详细

COM的C++实现

时间:2014-05-31 18:24:31      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

把类的公共方法提取出来成为一个抽象基类,这就是接口

即接口是对外的部分,继承接口的类是实现部分

接口的唯一目的是强制派生类以虚函数的方式实现组件接口的方法

接口完整的描述了C++中Vtable的布局 

COM只能通过一个Vtable指针来提供对它组件的访问,对组件实现的访问是不能的

COM的核心概念----通过使用Vtable来为组件的功能提供接口

pInterface -> _Vptr -> Vtable(&FUnc())  // Vtable的结构是通过接口描述出来的

For example:

  ActiveX提供了接口的声明,而你则提供了接口的实现

 

COM最重要的API -- CoCreateInstance() -- 寻找组件,载入组件,返回所要求的接口指针

 

多数组件拥有多个接口,系统需要一种机制使客户可以访问某一特定的接口 -- QueryInterface

 

COM提供了把一个组件的功能分割到多个接口里的能力,每一个接口都把一个小的、准确定义的功能集展示出来。这样客户就可以直接与所需要的功能块打交道。

 

所有COM组件都需要实现一个被称为IUnknown的标准COM接口

IUnknown的功能: 1.提供了一种标准的途径QueryInterface, 用户可以通过该途径在指定的组件里要求一个特定的接口

         2.帮助组件在生存期内进行管理: AddRef()  Release()

bubuko.com,布布扣
1 class IUnknown
2 {
3 public:
4     virtual HRESULT QueryInterface(REFIID & riid, void ** ppv) = 0;
5     virtual ULONG AddRef() = 0;
6     virtual ULONG Release() = 0;    
7 };
bubuko.com,布布扣

UUID:通用独有标示符 Universally Unique Identifier

GUID: 全局独有标示符 Global Unique Identifier

RPC : 远程进程调用 Remote Procedure Calls

 

COM提供二进制级别的复用,而不是源代码级别的复用

 

 

COM的C++实现,布布扣,bubuko.com

COM的C++实现

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/aoun/p/3762480.html

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