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

《COM本质论》读书笔记

时间:2016-02-06 22:19:44      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

前言

虽然一直都不喜欢Windows的应用开发,不过由于现在工作需要,必须对 Win32 开发非常熟悉。 Windows 上的 C++ 开发,逃不过对组建对象模型COM(Component Object Model)编程的学习和理解,尤其是游戏、音视频领域 —— Direct3D/Direct2D/DirectShow/DirectSound 等等。COM已经是上个世纪的产物了,所以相关的学习资料也都很老了,不过《COM本质论》是一本不错的入门书。在此我做做笔记加深理解。

 

第1章:COM是一个更好的C++

"静态库",不同程序有相同的代码片段 FastString.obj。

“动态库”,不同程序可以指向相同的代码片段,减少内存空间。

 

C++的编译模型,它不能够支持独立的二进制组建的设计。C++的编译模型要求客户必须知道对象的布局结构,从而导致了客户和对象可执行代码之间的二进制耦合关系。
 
封装(encapsulation)的概念是把“一个对象的外观(接口)同其实际工作方式(实现)分离开来”为基础。C++的问题在于这条原则并没有被应用到二进制层次上,因为C++类既是接口也是实现。
 

第2章:接口

COM 提供了 接口定义语言(Interface Definition Language, IDL),它只用到了基本的、大家都很熟悉的 C 语法,同时加入了某些用来 ”消除 C 语言中二义性特征“的能力。
COM IDL 基于 Open Software Foundation 的 Distributed Computing Environment Remote Procedure Call (分布式 RPC 远程调用)。
几乎素有的COM方法都会返回一个HRESULT类型的错误号码。
技术分享
SDK 头文件定义了两个宏可以简化 HRESULT 有关的代码:
技术分享
 
技术分享
 
COM 接口都被分配一个二进制名字:全局唯一标识符 GUID,是 128 bit 的,GUID 基于 UUID。
IID: 接口 ID (Interface ID)
CLSID: 类 ID (class ID)

 

第3章:类

COM 有三种激活方式:
CoGetClassObject : 绑定到类对象的引用;
CoCreateInstanceEx :绑定到指向一个新的类实例的引用
CoGetInstanceFromFile: 绑定到指向文件中永久实例的引用。
 
 

第4章:对象

 
 
 
 
 
 
 
(未完待续)
 
 

 

《COM本质论》读书笔记

标签:

原文地址:http://www.cnblogs.com/rhzhang/p/5184262.html

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