前言 1
第Ⅰ部分 Windows 2000基础知识 3
第1章 Windows 2000简介 5
1.1 Windows简介 5
1.2 Windows 2000简介 6
1.3 Windows 2000新增内容 6
1.4 为Windows 2000编写代码的原因 7
1.5 编写Windows代码的基本概念 7
1.7 小结 8
1.6 如何使用MSDN 8
第2章 Windows 2000基本编程技术 9
2.1 Windows 2000结构 9
2.1.1 Windows执行程序 9
2.1.2 Windows的保护子系统 11
2.2 应用程序基础知识 11
2.2.1 应用程序类型 11
2.2.2 应用程序结构 14
2.2.3 进程对象 16
2.2.4 进程生命周期 20
2.3 线程的执行 29
2.3.1 最基本的多线程 30
2.3.2 线程对象 32
2.3.3 过滤器 42
2.4 小结 44
3.1 内核对象的一般使用 45
3.1.1 什么是内核对象 45
第3章 使用内核对象 45
3.1.2 内核对象的基本属性 48
3.1.3 可用的内核对象 48
3.1.4 内核对象句柄 49
3.1.5 内核对象命名 55
3.2 内核对象安全性 58
3.2.1 安全性对象类型 59
3.2.2 观察和调整内核对象安全性信息 66
3.2.3 安全工具的使用 69
3.3.1 为什么要等待信号状态 76
3.3 等待信号状态 76
3.3.2 单对象等待 79
3.3.3 高级单对象等待 81
3.3.4 多对象等待 87
3.3.5 等待和APC 91
3.4 小结 91
第4章 常见内核对象 93
4.1 Windows 2000内核提供的对象 93
4.2 核心应用程序服务 93
4.2.1 计时器 94
4.2.2 文件查找 105
4.2.3 改变通知 108
4.2.4 作业 112
4.3 线程同步 115
4.3.1 互锁函数 115
4.3.2 临界段 118
4.3.3 事件 122
4.3.4 互斥量 126
4.3.5 信号量 129
4.4 线程间的通信 132
4.4.1 文件 132
4.4.2 文件映射 136
4.5 小结 140
第Ⅱ部分 用户交互操作 141
第5章 GDI API 143
5.1 GDI API综述 143
5.2.1 设备描述表绘制对象和模式 144
5.2 设备描述表 144
5.2.2 获取设备描述表 147
5.2.3 在设备描述表上绘制 147
5.3 处理应用程序中的屏幕刷新 149
5.4 在屏幕上显示文本 149
5.5 在屏幕上显示位图 152
5.6 区域和路径 156
5.6.1 创建区域 156
5.6.2 创建路径 162
5.7 裁剪区 166
5.8 增强的元文件 169
5.9 小结 174
第6章 使用通用控件 175
6.1 通用控件库 175
6.2 通用控件库的一般使用 176
6.2.1 一般工具 176
6.2.2 通用控件样例程序 178
6.2.1 动画控件 180
6.2 通用控件 180
6.2.2 ComboBoxEx控件 183
6.2.3 日期和时间选择控件 186
6.2.4 月日历控件 192
6.2.5 拖动列表框控件 196
6.2.6 列表视图控件 201
6.2.7 头控件 207
6.2.8 树视图控件 212
6.2.9 热键控件 216
6.2.10 IP地址控件 219
6.2.11 轨迹栏控件 222
6.2.12 进度栏控件 226
6.2.13 Pager控件 231
6.2.14 Rebar控件 231
6.2.15 工具栏控件 232
6.2.16 状态栏控件 240
6.2.17 工具栏提示控件 240
6.2.18 Up-Down控件 244
6.2.19 选项卡控件 247
6.2.20 属性表控件 251
6.3 小结 265
第7章 使用通用对话框 267
7.1 通用控件库 267
7.2 通用对话框 270
7.2.1 颜色对话框 270
7.2.2 字体对话框 273
7.2.3 查找和替换文本对话框 276
7.2.4 打开文件和另存为对话框 280
7.2.5 页面设置对话框 286
7.2.6 打印对话框 292
7.2.7 打印属性表对话框 296
7.3 小结 301
第8章 使用Windows 303
8.1 Windows中的窗口 303
8.1.1 窗口的类型 303
8.1.2 Windows类 304
8.2 如何创建和处理窗口 306
8.2.1 窗口过程 310
8.2.2 对话框 313
8.2.3 只有消息的窗口 315
8.2.4 分层窗口 315
8.3 消息路由 318
8.3.1 获取消息 318
8.3.2 粘贴和发送消息 319
8.4 窗口激活 320
8.5 多监视器支持 325
8.6 小结 330
第9章 shell服务 331
9.1 什么是shell 331
9.2 shell组件 331
9.2.1 桌面 332
9.2.2 任务栏 334
9.3.1 PIDL函数 336
9.3 shell函数 336
9.3.2 文件对象函数 342
9.3.3 文件夹对象函数 345
9.3.4 系统区API 348
9.3.5 内部函数 353
9.3.6 各种帮助API 354
9.4 shell接口 355
9.4.1 核心对象 356
9.4.2 名字空间函数 359
9.5.2 路径帮助方法 367
9.5.1 字符串帮助程序 367
9.5 轻量级API 367
9.5.3 URL帮助方法 369
9.5.4 注册表帮助方法 370
9.6 小结 370
第Ⅲ部分 建立应用程序 371
第10章 建立服务的应用程序 373
10.1 软件共享服务 373
10.1.1 动态链接库 373
10.1.2 COM对象 385
10.2 编程服务 391
10.2.1 长整数 391
10.2.2 时间支持 393
10.3 系统服务 403
10.3.1 系统注册表 404
10.3.2 系统信息 412
10.3.3 系统寿命API 416
10.4 小结 417
11.1.1 服务控制管理器 419
第11章 服务应用程序 419
11.1 如何与服务交互 419
11.1.2 管理服务 420
11.1.3 服务对象 424
11.1.4 命令行工具 432
11.2 服务创建的基本知识 432
11.2.1 服务的寿命 433
11.2.3 支持多服务 442
11.3 事件日志和性能 442
11.2.2 安装和配置 442
11.3.1 事件日志 443
11.3.2 性能监视器 445
11.3.3 简单的网络管理协议 446
11.4 安全和管理 446
11.4.1 账号安全性 447
11.4.2 MMC管理单元 450
11.5 小结 454
12.1 Windows内存机制 455
第12章 内存管理 455
12.2 虚拟内存 459
12.2.1 虚拟内存检查 459
12.2.2 虚拟内存处理 463
12.3 应用程序堆 466
12.3.1 堆生命周期 467
12.3.2 堆时间间隔 471
12.4 内存扩充 473
12.4.1 实用工具函数 473
12.4.2 文件映射 474
12.4.3 地址窗口扩充 475
12.5 小结 475
第13章 文件系统 477
13.1 文件输入/输出API 477
13.1.1 创建和打开文件 478
13.1.2 读写文件 480
13.1.3 创建和使用临时文件 481
13.1.4 搜索文件 482
13.1.5 监控目录中的改动 484
13.1.6 异步读写文件 490
13.2 Windows 2000文件系统 492
13.3 NTFS特性 493
13.3.1 压缩文件和目录 493
13.3.2 文件和目录的加密和解密 496
13.3.3 指定磁盘配额 500
13.3.4 卷标安装点 501
13.3.6 分布式链接跟踪 502
13.3.5 使用reparse点 502
13.3.7 支持sparse文件 503
13.4 小结 503
第14章 Active Directory 505
14.1 Active Directory综述 505
14.2 访问Active Directory对象的方法 506
14.2.1 绑定 507
14.2.2 枚举 509
14.2.3 搜索 513
14.3 管理用户和组 515
14.3.1 用户 516
14.3.2 组 519
14.4 小结 524
第15章 其他系统服务 525
15.1 字符控制台 525
15.1.1 基本特性 525
15.1.2 使用控制台属性API 528
15.1.3 使用控制台缓冲区 530
15.1.4 处理控制台输入输出 534
15.1.5 CGI控制台应用函数 537
15.2 电源管理系统 538
15.2.2 响应电源状态变化 544
15.3 小容量进程间通信 546
15.3.1 使用邮件槽 546
15.3.2 使用管道 552
15.4 Internet集成 553
15.4.1 配置和使用Internet 553
15.4.2 获取Internet内容 559
15.5 密码术和协议 565
15.5.1 基本加密函数 566
15.5.2 加密 568
15.5.3 识别及数据完整性 572
15.6 小结 573
第16章 使用COM+ 575
16.1 COM+概要 575
16.1.2 拦截器和描述表 576
16.1.3 简单COM+应用 576
16.1.1 COM+应用程序应用程序 576
16.2.1 即时激活 583
16.2.2 交易 583
16.2 COM+服务 583
16.2.3 队列组件 588
16.2.4 COM+事件 590
16.2.5 对象池 594
16.2.6 COM+安全性 598
16.3 COM+应用程序分发 599
16.4 小结 600
第Ⅳ部分 最后的工作 601
第17章 交付应用程序 603
17.1 编程习惯 603
17.1.1 文件夹和路径 603
17.1.2 数据保存 611
17.1.3 支持低权限账号 617
17.2 遵守应用程序编程规范 621
17.2.1 规则基础 622
17.2.2 安装 622
17.2.3 并存组件 624
17.2.4 外观 624
17.3 小结 626
第18章 开发支持 627
18.1 错误和异常处理 627
18.1.1 使用API错误代码 628
18.1.2 使用结构化异常处理过程 631
18.1.3 通知用户错误 638
15.2.1 管理电源状态 638
18.2 进程信息 640
18.2.1 使用ToolHelp32 API 641
18.2.2 使用PSAPI 649
18.3 套装工具 651
18.3.1 使用C++运行调试库 652
18.3.2 使用Microsoft基本类库 664
18.3.3 使用动态模板库 666
18.4 性能监测 667
18.4.1 发布正确的功能 668
18.4.2 注册计数器 672
18.4.3 收集数据 676
18.4.4 输出数据 680
18.5 其他工具 687
18.5.1 调试器集成 688
18.5.2 可移植可执行的映像helper API 688
18.6 小结 688
附录 689