图书介绍
COM技术内幕:微软组件对象模型pdf电子书版本下载
- (美)罗杰森(Rogerson 著
- 出版社: 清华大学出版社
- ISBN:
- 出版时间:1999
- 标注页数:301页
- 文件大小:36MB
- 文件页数:319页
- 主题词:
PDF下载
下载说明
COM技术内幕:微软组件对象模型PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 组件 1
1.1 使用组件的优点 2
1.1.1 应用的定制 2
1.1.2 组件库 3
1.1.3 分布式组件 3
1.2 对组件的要求 4
1.2.1 动态链接 4
1.2.2 封装性 5
1.3 COM 6
1.3.1 COM组件是 7
1.3.2 COM不是 7
1.3.4 COM方法 8
1.3.5 COM超越了用户的需要 8
1.3.3 COM库 8
1.4 本章小结 9
2.1 接口的作用 11
第2章 接口 11
目录 11
引言 11
2.1.1 可复用应用架构 12
2.1.2 COM接口的其他优点 13
2.2 COM接口的实现 13
2.2.1 代码约定 14
2.2.2 一个完整的例子 15
2.2.3 非接口通信 18
2.2.4 实现细节 18
2.3.2 多态性 20
2.3.1 接口的不变性 20
2.3 接口理论:第二部分 20
2.4 接口的背后 21
2.4.1 虚函数表 21
2.4.2 vtbl指针及实例数据 23
2.4.3 多重实例 24
2.4.4 不同的类,相同的vtbl 25
2.5 本章小结 26
第3章 QueryInterface函数 27
3.1 接口查询 28
3.1.1 关于IUnknown 28
3.1.2 IUnKnown指针的获取 29
3.1.3 关于QueryInterface 29
3.1.4 QueryInterface的用法 30
3.1.5 QueryInterface的实现 31
3.1.6 关于类型转换 32
3.1.7 一个完整的例子 35
3.2 关于QueryInterface的实现规则 40
3.2.1 同一IUnknown 40
3.2.2 客户可以获取曾经得到过的接口 41
3.2.3 可以再次获取已经拥有的接口 41
3.2.4 客户可以从任何接口返回到起始接口 42
3.2.5 若能够从某接口获取某特定接口,则从任意接口都将 42
能够获取此接口 42
3.3 QueryInterface定义了组件 43
3.3.1 接口集 44
3.4 组件新版本的处理 44
3.4.2 不同版本接口的命名 46
3.4.3 隐含合约 46
3.4.1 何时需要建立一个新版本 46
3.5 本章小结 47
第4章 引用计数 49
4.1 生命期控制 49
4.2 引用计数简介 50
4.2.1 引用计数接口 53
4.2.2 AddRef和Release的实现 54
4.3 何时进行引用计数 61
4.3.1 引用计数的优化 61
4.3.2 引用计数规则 64
4.4 本章小结 66
第5章 动态链接 67
5.1 组件的创建 67
5.1.1 从DLL中引出函数 68
5.1.2 DLL的装载 70
5.2 客户和组件的划分 72
5.2.1 程序清单 73
5.3 对象串 78
5.4 本章小结 79
第6章 关于HRESULT、GUID、注册表及其他细节 81
6.1 HRESULT 81
6.1.1 HRESULT值的查找 83
6.1.2 HRESULT值的使用 85
6.1.3 用户自己代码的定义 86
6.2 GUID 88
6.2.1 为什么要使用GUID 88
6.2.2 GUID的声明和定义 89
6.2.4 将GUID作为组件标识符 91
6.2.3 GUID的比较 91
6.2.5 通过引用传递GUID值 92
6.3 Windows注册表 92
6.3.1 注册表的组织 92
6.3.2 注册表编辑器 92
6.3.3 CLSID关键字结构 93
6.3.4 关于注册表的其他细节 94
6.3.5 ProgID 95
6.3.6 自注册 97
6.3.7 组件类别 98
6.3.8 OleView 99
6.4 COM库函数 100
6.4.1 COM库的初始化 100
6.4.3 将字符串转换成GUID 101
6.4.2 内存管理 101
6.5 本章小结 103
第7章 类厂 105
7.1 CoCreateInstance 105
7.1.1 CoCreateInstance的声明 106
7.1.2 CoCreateInstance的用法 106
7.1.3 类环境 107
7.1.4 客户程序清单 108
7.1.5 CoCreateInstance的不灵活性 110
7.2 类厂 110
7.2.1 CoGetClassObject 110
7.2.2 IClassFactory 111
7.2.3 CoCreateInstance与 CoGetClassObject的比较 112
7.2.4 类厂的若干特性 113
7.3 类厂的实现 113
7.3.2 组件的创建过程 114
7.3.1 DIletClassObject的使用 114
7.3.3 组件代码清单 115
7.3.4 流程控制 122
7.3.5 组件的注册 123
7.4 同一DLL中的多个组件 124
7.4.1 类厂实现的复用 125
7.5 DLL的卸载 126
7.5.1 DllCanUnloadNow的使用 126
7.5.2 LockServer 126
7.6 本章小结 127
第8章 组件复用:包容与聚合 129
8.1 包容和聚合 130
8.1.1 包容简介 130
8.1.3 包容与聚合的比较 131
8.1.2 聚合简介 131
8.2 包容的实现 132
8.2.1 接口扩展 135
8.3 聚合的实现 136
8.3.1 QueryInterface的实现 137
8.3.2 不正确的IUnknown 138
8.3.3 聚合的未知接口 140
8.3.4 内部组件的创建 144
8.3.5 外部组件中指向内部组件接口的指针 147
8.4 一个完整的例子 149
8.4.1 盲聚合 165
8.5 现实世界中的聚合和包容 167
8.5.1 组件的内部状态信息 167
8.5.2 虚函数的模拟 169
8.6 本章小结 170
9.1 客户端的简化 171
第9章 编程工作的简化 171
9.1.1 智能接口指针 172
9.1.2 C++包装类 183
9.2 服务器端的简化 184
9.2.1 unknown接口基类 185
9.2.2 类厂基类 189
9.2.3 CUnknown和CFactory的使用 195
9.2.4 集成步骤 200
9.3 本章小结 201
第10章 EXE中的服务器 203
10.1 不同的进程 203
10.1.1 本地过程调用 204
10.1.3 代理/存根DLL 205
10.1.2 列集(marshaling) 205
10.2 IDL/MIDL简介 207
10.2.1 关于IDL 207
10.2.2 IDL接口描述举例 208
10.2.3 MIDL编译器 213
10.3 本地服务程序的实现 217
10.3.1 示例程序的运行 217
10.3.2 去掉入口点函数 218
10.3.3 类厂的启动 218
10.3.4对LockServer的修改 222
10.4 远程访问能力 224
10.4.1 DCOMCNFGEXE所完成的工作 225
10.4.2 工作机理 226
10.4.3 其他DCOM信息 227
10.5 本章小结 229
第11章 分发接口与自动化 231
11.1 一种新的通信方式 232
11.1.1 旧的通信方式 232
11.1.2 IDispatch接口 232
11.2 IDispatch的使用 236
11.2.1 Invoke函数的参数 238
11.2.2 示例 243
11.2.3 VARIANT类型 245
11.2.4 BSTR数据类型 247
11.2.5 SAFEARRAY类型 248
11.3 类型库 249
11.3.1 类型库的创建 250
11.3.2 类型库的使用 252
11.3.3 注册表中的类型库 253
11.4 IDispatch接口的实现 254
11.4.1 异常的引发 256
11.4.2 参数列集 257
11.5 本章小结 258
第12章 多线程 259
12.1 COM线程模型 260
12.1.1 Win32线程 260
12.1.2 COM线程 260
12.1.3 套间 261
12.1.4 套间线程 263
12.1.5 自由线程 264
12.1.6 列集与同步 264
12.2 套间线程的实现 266
12.2.1 自动列集 267
12.2.2 手工列集 267
12.2.3 编码 268
12.2.4 对套间线程例子的说明 269
12.3 自由线程的实现 276
12.3.1 对自由线程例子的说明 277
12.3.2 自由线程参数列集的优化 282
12.4 关于线程模型的注册表键 284
12.5 本章小结 284
第13章 一个完整的例子 287
13.1 Tangram程序 288
13.1.1 Tangram的运行 288
13.1.3 客户程序 289
13.1.2 所用的组件 289
13.1.4 TangramModel组件 290
13.1.5 TangramGdiVisual和TangramGLVisual组件 291
13.1.6 TangramGdiWorld和TangramGLWorld组件 292
13.2 展示 293
13.3 IDL文件 293
13.3.1 DLLDATA.C文件 294
13.4 循环引用计数 294
13.4.1 不调用AddRef 295
13.4.2 使用显式终止 296
13.4.3 使用一个单独的组件 296
13.5 事件和连接点 297
13.5.1 IEnumXXX 299
13.6 本章小结 300
结束语 301