![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
COM技术内幕读书笔记
文章平均质量分 82
夜樱抱月
有些人生来就具有统率百万人的领袖风范;另一些人则是为写出颠覆世界的软件而生。
展开
-
第四章:引用计数
AddRef和Release实现的是一种名为引用计数的内存管理技术。引用计数是使组件能够自己将自己删除的最简单同时也是效率最高的方法。COM组件将维护一个称作是引用计数的数值。当客户从组件取得一个接口时,此引用计数值将增1。当客户使用完某个接口后,组件的引用计数值将减1。当引用计数值为0时,组件即可将自己从内存中删除。当创建某个已有接口的另外一个引用时,客户也将会增大相应组件的引用计数值。读者大概已经可以猜出,AddRef可增大引用计数值,而Release将减少这一值。原创 2024-07-18 22:37:22 · 726 阅读 · 0 评论 -
第八章 组件复用:包容与聚合
下面我们将实现一个聚合了一个接口的组件。在这个例子中,组件1支持两个接口IX和IY。但它只实现了接口XX,而没有实现接口IY,并且也并没有将此接口调用转发给组件2的实现。相反,当客户向组件1查询接口IY时,组件1将返回内部组件即组件2所实现的IY接口的指针。程序清单8-3给出的是外部组件的实现,程序清单8-4则是内部组件的实现。客户基本上没有什么变化,因它并不关心我们使用的是包容还是聚合。在第五章的动态链接过后吗,就正式进入了COM组件的学习,因个人原因,并未详细讲解。COM技术内幕所有学习笔记就此完结。原创 2024-08-17 11:49:48 · 235 阅读 · 0 评论 -
第七章:类场
【代码】第七章:类场。原创 2024-08-13 10:41:50 · 117 阅读 · 0 评论 -
第六章:关于HRESULT、GUID、注册表及其他细节
在本章中,我们将会讨论关于前面所未能细说的一些细节问题。首先就是HRESULT。关于它我们在第3章中讨论QueryInterface时曾有所提及。第二个是GUID。传递给Qnerylnterface的IID结构就是GUID的一个例子。之后,我们将讨论组件如何在Windows的注册表中发布其位置信息,以便客户能够找到并创建它们。最后我们将介绍COM库中的一些有用的函数及实用程序。原创 2024-08-10 14:01:51 · 908 阅读 · 0 评论 -
第五章:动态链接
在本章中我们要学习的是将组件放入动态链接库(DLL)中。DLL是是一个组件服务器,也可以说是一种发行组件的方式,我们在这里要清楚:一个组件并不是一个DLL,组件实际上应该是在DLL中时间的接口集。原创 2024-07-24 11:21:54 · 79 阅读 · 0 评论 -
第三章:QueryInterface函数
有一个名叫Animal的游戏程序,它内部维护了一个二叉树,可以通过询问玩家问题来沿着一个分支来向答案推荐,以此猜测玩家心中所想的动物(Animal),同此程序并不知道用户所假想的动物是什么一样,即使最后猜到玩家心中的答案,但“Animal”程序对于此动物的了解也是停留在几个表象特征,他并不能像玩家一样对他所猜到的答案有一个完整的认知,COM客户同理,客户可以询问组件是否支持某个特定的接口。在进行多次这种询问之后,客户对于组件的认识将越来越清晰。但不管怎样,。不过这并不是一个负面影响,因为。原创 2024-07-14 14:47:44 · 690 阅读 · 0 评论 -
第二章:接口
COM的接口就是一个包含了一个的元素包含的是组件所实现的函数的地址。在C++中,可以用抽象基来实现COM接口,且由于一个COM组件可以支持任意数量的接口,我们可应用多态来实现。原创 2024-06-06 22:18:18 · 949 阅读 · 0 评论 -
COM组件
按MFC风格而写成的。例如在成员变量的前面均加有前缀以m_。这样对于类似于m_SleepBear的变量,读者一看就可知道它是一个成员变量。另外所有类的名称前面均有一个大写的字母CO,例如CCozyBear表示的是类Cozy Bear的名称。下表列出了书中所用的其他一些前缀。原创 2024-06-05 21:18:52 · 735 阅读 · 0 评论