第1章 从Win32和Win64开始 1
1.1 操作系统的本质 1
1.2 Win32与Windows 2000、NT、9x以及CE 3
1.3 Win32、标准和开放式系统 4
1.4 Win32准则 5
1.5 为Win64做好准备 7
1.6 标准C库函数:何时用于文件处理 7
1.7 使用本书的前提 8
1.8 范例:简单顺序文件的复制 9
1.9 小结 13
1.10 练习 14
第2章 Win32文件系统操作和字符I/O 15
2.1 Win32文件系统 15
2.2 文件命名 16
2.3 打开、读、写和关闭文件 16
2.4 插曲:Unicode字符和普通字符 20
2.5 Unicode方案 22
2.6 标准设备和控制台I/O 23
2.7 范例:打印和提示 26
2.8 范例:错误处理 28
2.9 范例:复制多文件到标准输出 29
2.10 范例:ASCII到Unicode的转换 30
2.11 文件和目录管理 32
2.12 范例:打印当前目录 35
2.13 小结 35
2.14 练习 36
第3章 高级文件和目录处理以及注册表 38
3.1 64位文件系统 38
3.2 文件指针 38
3.3 获取文件大小 40
3.4 范例:查看文件结尾 41
3.5 文件属性和目录处理 43
3.6 范例:列出文件属性 46
3.7 设置文件时间 49
3.8 文件处理策略 50
3.9 文件锁定 50
3.10 注册表 53
3.11 注册表管理 55
3.12 范例:列举注册键和内容 58
3.13 小结 61
3.14 练习 61
第4章 结构化异常处理 63
4.1 异常和异常处理程序 63
4.2 浮点异常 68
4.3 错误和异常 69
4.4 范例:将错误当作异常 70
4.5 终止处理程序 71
4.6 范例:使用终止处理程序提高程序的质量 74
4.7 范例:使用filter函数 76
4.8 控制台控制处理程序 79
4.9 范例:控制台控制处理程序 80
4.10 小结 81
4.11 练习 81
第5章 Win32对象安全性 82
5.1 安全属性 82
5.2 安全性概述:安全性描述符 83
5.3 安全性标识符 85
5.4 管理ACL 86
5.5 范例:NTFS文件的UNIX风格权限 87
5.6 范例:初始化安全属性 90
5.7 读取和改变安全性描述符 92
5.8 范例:读取文件权限 94
5.9 范例:改变文件权限 95
5.10 附加的安全性概述 96
5.11 小结 97
5.12 练习 98
第6章 内存管理、内存映射文件以及DLL 99
6.1 Win32内存管理体系 99
6.2 堆 101
6.3 管理堆内存 103
6.4 范例:用二分搜索树法排序文件 105
6.5 内存映射文件 110
6.6 范例:用映射文件进行顺序文件处理 114
6.7 范例:排序内存映射文件 116
6.8 范例:使用基指针 117
6.9 动态链接库 121
6.10 范例:显式链接文件转换函数 124
6.11 DLL入口点 125
6.12 小结 126
6.13 练习 127
第7章 进程管理 128
7.1 Windows进程和线程 128
7.2 进程创建 129
7.3 进程标识符 134
7.4 复制句柄 134
7.5 退出和终止进程 135
7.6 等待进程终止 136
7.7 环境块和字符串 137
7.8 范例:并行式搜索 138
7.9 进程运行时间 141
7.10 范例:进程运行时间 141
7.11 产生控制台控制事件 143
7.12 范例:简单的作业管理 144
7.13 作业对象 151
7.14 小结 152
7.15 练习 152
第8章 线程和调度 154
8.1 线程概述 154
8.2 线程基础 155
8.3 线程管理 156
8.4 在线程中使用C库 159
8.5 范例:多线程模式搜索 160
8.6 主机/工作者和其他线程模型 162
8.7 范例:合并排序——使用SMP的分而治之的方式 163
8.8 线程局部存储(TLS) 167
8.9 进程与线程的优先权和调度 168
8.10 线程状态 169
8.11 缺陷和常见的错误 171
8.12 计时等待 171
8.13 Fiber 172
8.14 小结 175
8.15 练习 175
第9章 线程同步 177
9.1 线程同步的需求 177
9.2 线程同步对象 180
9.3 CRITICAL_SECTION对象 181
9.4 用于保护共享变量的CRITICAL_SECTION 182
9.5 范例:一个简单的生产者/消费者系统 183
9.6 互斥体 187
9.7 信号机 190
9.8 事件 193
9.9 范例:一个生产者/消费者系统 194
9.10 范例:同步性能影响 197
9.11 更多的互斥体和CRITICAL_SECTION原则 200
9.12 互锁函数深化 201
9.13 关于内存管理性能的考虑事项 202
9.14 小结 202
9.15 练习 203
第10章 高级线程同步 205
10.1 互斥体、事件和条件变量模型 205
10.2 范例:阀值屏障对象 209
10.3 队列对象 211
10.4 范例:在多级管道中使用队列 215
10.5 关于设计、调试和测试的提示 221
10.6 小结 223
10.7 练习 224
第11章 进程间通信 225
11.1 匿名管道 225
11.2 范例:使用一个匿名管道来实现I/O重定向 226
11.3 命名管道 228
11.4 命名管道事务函数 232
11.5 范例:一个客户端/服务器命令行处理器 235
11.6 客户端/服务器命令行处理器注释 240
11.7 邮槽 240
11.8 管道和邮槽创建、连接和命名 243
11.9 范例:客户端能够查找的服务器 243
11.10 线程模型注释 245
11.11 小结 246
11.12 练习 246
第12章 使用Windows Socket进行网络编程 248
12.1 Windows Socket 248
12.2 Socket服务器函数 250
12.3 Socket客户端函数 253
12.4 比较命名管道和Socket 254
12.5 范例:Socket消息接收函数 255
12.6 范例:基于Socket的客户端 256
12.7 范例:具有新特性的、基于Socket的服务器 258
12.8 进程内服务 262
12.9 面向行的消息、DLL入口点和TLS 264
12.10 范例:一个用于Socket消息的线程安全的DLL 264
12.11 范例:一个替代的线程安全的DLL策略 268
12.12 数据报 270
12.13 Berkeley与Windows Socket比较 271
12.14 Windows Socket的重叠I/O 271
12.15 Windows Socket 2 271
12.16 小结 271
12.17 练习 272
第13章 NT服务 274
13.1 编写NT服务——概述 274
13.2 main()函数 275
13.3 ServiceMain()函数 276
13.4 服务控制处理程序 279
13.5 范例:服务“包装” 279
13.6 管理Windows NT服务 282
13.7 总结:服务操作和管理 284
13.8 范例:服务控制命令处理程序 284
13.9 与服务共享内核对象 287
13.10 事件日志 287
13.11 调试服务的注意事项 287
13.12 小结 288
13.13 练习 289
第14章 异步输入/输出和完成端口 290
14.1 Win32异步I/O概述 290
14.2 重叠I/O 291
14.3 范例:文件句柄同步 294
14.4 范例:带有重叠I/O和多缓冲器的文件转换 294
14.5 带有完成例程的扩展I/O 297
14.6 范例:带有扩展I/O的文件转换 301
14.7 带有线程的异步I/O 303
14.8 可等待计时器 304
14.9 范例:使用可等待计时器 305
14.10 I/O完成端口 306
14.11 范例:使用I/O完成端口的服务器 309
14.12 小结 312
14.13 练习 313
第15章 远程过程调用和COM概述 314
15.1 远程过程调用 314
15.2 基本的RPC体系结构 315
15.3 RPC接口定义 316
15.4 范例:接口定义 317
15.5 范例:RPC客户端 318
15.6 范例:RPC服务器 320
15.7 COM和DCOM简要概述 322
15.8 小结 324
15.9 练习 325
第16章 Win64编程 326
16.1 64位体系结构概述 326
16.2 Win64编程模型 328
16.3 数据类型 328
16.4 3个Win64编程模型 330
16.5 传统代码转换 331
附录A 范例程序的使用 333
A.1 范例程序的组织结构 333
A.2 包含文件的清单 338
A.3 附加的实用程序 343
附录B Win32、UNIX和C库文件的比较 346
B.1 第2和3章:文件和目录管理 347
B.2 第4章:结构化异常处理 349
B.3 第5章:保护Win32对象 350
B.4 第6章:内存管理、内存映射文件和DLL 351
B.5 第7章:进程管理 352
B.6 第8章:线程和调度 353
B.7 第9和10章:线程同步 354
B.8 第11章:进程间通信 354
B.9 第14章:异步I/O 355
附录C 性能结果 356
C.1 测试配置 356
C.2 性能测量 357
C.3 运行测试 364