
COM
布鲁斯_陈
for dream to fight...
展开
-
COM一些小知识
参考来源:http://www.host01.com/article/software/VisualC/2006091718392288.htm 1 COM组件是一个C++类,他从一系列接口派生而来,并实现了所有的接口。这些接口都是纯虚类。 2 COM组件有三个最基本的接口类,分别是IUnknown、IClassFactory、IDispatch。 COM规范规定任何组件、任转载 2015-06-09 15:02:09 · 358 阅读 · 0 评论 -
COM学习笔记1_COM初步探索
COM组件的两个重要需求: 1。 动态链接 2。 隐藏实现细节 COM初步探索 一个典型C++客户和组件的例子 [cpp] view plaincopy // 组件模块 interface IX { virtual void __stdcall Fx1() = 0 ; virtual void __转载 2015-06-09 15:11:50 · 996 阅读 · 0 评论 -
COM学习笔记8_IDispatch (调度接口) 自动化
一般的通讯方式: 客户 COM(vbtl)接口 COM组件 自动化通讯方式: 客户(自动化控制器) IDispatch::Invoke 调度接口(或vbtl接口) 实现IDispatch接口的COM组件 (自动化服务器) 自动化服务器 : COM组件 自动化控制器 :COM客户 相关知识:IDispatch, 调度接口,双重接口,类型库,IDL, VARIANT,转载 2015-06-09 16:00:38 · 709 阅读 · 0 评论 -
COM学习笔记2_COM接口vbtl内存布局
这里要注意的是,虽然图中显示IY的虚函数表中QueryInterface,AddRef和Release指向的 函数地址与IX的虚函数表中对应函数相同,都直接指向CA::QueryInterface等。 但其实并不完全是这样。如果看汇编实现,可以看到 IY中的AddRef指向的地址是这样: [thunk]:CA::AddRef`adjustor{4}': 00401740 sub转载 2015-06-09 15:21:29 · 569 阅读 · 0 评论 -
COM学习笔记3_IUnknown的三个接口函数
对于COM组件,正确处理IUnknown的三个接口函数非常重要。 对于QueryInterface,一个参考处理如下: [cpp] view plaincopy HRESULT __stdcall CA::QueryInterface(const IID& iid, void** ppv) { if (iid ==转载 2015-06-09 15:24:38 · 633 阅读 · 0 评论 -
COM学习笔记4_创建COM组件的实现
为了实现COM的动态链接,必须把组件的实现和客户代码分隔开。 一种处理是把组件放入DLL中。 这样为了支持客户创建组建,组件需要导出一个类似CreateInstance的函数。 [cpp] view plaincopy extern "C" IUnknown* CreateInstance() { IUnknown* pI转载 2015-06-09 15:27:35 · 1250 阅读 · 0 评论