com关于IUnknown接口】的更多相关文章

COM组件其实是一种特殊的类,遵循一个统一的标准,使到各个软件都可以通过某种方法访问这个类的函数和方法,也就可以做到组件通用. com就是统一的标准--通过接口来调用com组件.接口是你的com组件能被外界所感知的部分,实际就是一组方法(虚函数).             IUnknown是所有接口的基础,他负责两项工作:             IUnknown::QueryInterface负责得到该组件的其他接口的指针             IUnknown::AddRef/Releas…
com定义的每个接口都必须从IUnknown继承过来,主要原因是IUnknown接口提供了两个很重要的特性:生存期控制和接口查询. 客户程序仅仅能通过接口与com对象进行通信.尽管客户程序能够无论对象内部的实现细节.但它要控制对象的存在与否. 假设客户还要继续对对象进行操作.则它必须保证对象能一直存在于内存中:假设客户对对象的操作已经完毕.以后也不再须要该对象了,则它必须及时地把对象释放掉.以提高资源的利用率.IUnknown引入了"引用计数"方法,能够有效得控制对象的生存周期. 还有…
一.前言 书接上回,话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了.那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 Excel 呢?启动后,又如何让 Excel 自己去读入.解析.显示 xls 数据呢? 二.CLSID 概念 有一个非常简单的解决方案,那就是在对象数据的前面,保存有处理这个数据的程序名.(见下图左上) 图一.CLSID 的概念 这的确是一个简单的方法,但同时问题也很严重.在“张三…
IStream 接口  https://msdn.microsoft.com/en-us/library/windows/apps/aa380034 IStream接口允许您读取和写入 stream 对象的数据.流对象包含结构化的存储对象,存贮在哪里提供结构中的数据.简单的数据可以直接写入流,但最频繁,溪流是元素嵌套在一个存储对象.他们是类似于标准的文件. IStream接口定义方法类似于的 MS-DOS 脂肪的文件功能.例如,每个流对象都有其自己的访问权限和查找指针.DOS 文件和流对象之间的…
http://www.vckbase.com/index.php/wv/60 问题: 我用MFC编写COM程序有一段时间了,知道如何使用宏和嵌套类,以及如何在嵌套类中处理IUnknown接口,但对IUnknown的使用还是不太老练. 假设CMyClass是一个COM服务器,从CCmdTarget派生.它实现了IMyInterface.CMyClass的定义如下: class CMyClass: public CCmdTarget { BEGIN_INTERFACE_PART(...) STDME…
原文:COM:IUnknown.IClassFactory.IDispatch COM组件有三个最基本的接口类,分别是IUnknown.IClassFactory.IDispatch. COM规范规定任何组件.任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface.AddRef.Release.这三个函数是无比重要的,而且它们的排列顺序也是不可改变的.QueryInterface用于查询组件实现的其它接口,说白了也就是看看这个组件的父类中还有哪些…
int main( int argc, char *argv[] ) {    cout << "Initializing COM" << endl;      if ( FAILED( CoInitialize( NULL )))    {       cout << "Unable to initialize COM" << endl;       return -1;    }      ISampleMath*…
从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun.当然如果想偷懒的话,我们可以把 200 个函数都加到这一个接口中, 果真如此的话,恐怕就没有人喜欢使用我们这个组件了.一个组件既然可以提供多个接口,那么我们在设计的时候,就应该按照函数的功能进行分类,把不同功能分类的函数用多个接口表现出来.这样可以有如下的一些好处: 1.一个接口中的函数个数有限.功能集中,使用者容易学习.记忆和调用.一个接口到底提…
话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了.那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 Excel 呢?启动后,又如何让 Excel 自己去读入.解析.显示 xls 数据呢? 二.CLSID 概念 有一个非常简单的解决方案,那就是在对象数据的前面,保存有处理这个数据的程序名.(见下图左上) 图一.CLSID 的概念 这的确是一个简单的方法,但同时问题也很严重.在"张三"的计算机…
1.COM对象的理解 COM对象类似于C++语言中类的概念,类的每个实例代表一个COM对象,它也包括属性(即状态)和方法(即操作),状态反映对象的存在,方法就是接口. 2.COM对象的标识-CLSID GUID是一个128位的随机数,重复概率极低.它的值来源于两部分:空间值(网卡地址或随机数)和时间值. 获得GUID值可以使用VC++提供的工具:GUIDGen.exe 和 UUIDGen.exe.或者使用COM库的API函数CoCreatGuid(). 3.COM对象与C++对象的比较 COM对…