目录 1
简介 1
0.1 概述 1
0.2 Facilities(设备) 2
0.3 Microsoft课程 3
0.4 课程材料 4
0.5 你的期望 5
0.6 课程提纲 6
第一章 移植 11
1.1 概述 11
1.2 Windows 3.1编译器概述 12
1.3 Win32编译器概述 13
1.4 Makefile句法 14
1.5 Makefile第一部分:NTWIN32.MAK 15
1.6 Makefile第二部分:编译源程序 16
1.7 Makefile第三部分:编译资源 17
1.8 Makefile第四部分:连接 18
1.9 Headers(头) 19
1.10 移植工具 20
1.11 PORT.INI文件 22
1.12 移植的步骤 23
1.13 WinMain的使用 24
1.14 窗口消息程序 25
1.15 消息参数重装 26
1.16 消息封装的宏命令 28
1.17 可移植消息处理 29
1.18 可移植API函数 30
1.19 为Windows书写可移植C源代码 31
1.20 Pitfalls 33
1.21 Microsoft Win32软件开发工具(SDK) 34
1.22 演示 36
1.23 复习 37
1.24 实验一:移植 38
第二章 Windows NT体系结构概述 39
2.1 概述 39
2.2 Windows NT的设计目标 40
2.3 连接多重系统 41
2.4 Windows NT体系结构 42
2.5 NT执行程序 43
2.6 Windows NT子系统 44
2.7 进程间通信 45
2.8 抢占式多任务 46
2.9 多处理 47
2.10 虚存管理 48
2.11 Windows NT对象 49
2.12 对象模型 50
2.13 对象结构 51
2.14 Windows NT I/O系统体系结构 52
2.15 分层设备驱动程序 53
2.16 注册 54
2.17 复习 55
第三章 结构化的异常处理 56
3.1 概述 56
3.2 定义 57
3.3 句法 58
3.4 异常流程图 59
3.5 终止流程图 60
3.6 异常句柄查询体系 61
3.7 句柄特性 62
3.8 异常举例 63
3.9 终止举例 64
3.10 实验二:结构化的异常处理 65
3.11 异常调度 66
3.12 异常处理及解除 67
3.13 异常筛选程序 68
3.14 异常信息 69
3.15 未经处理的异常筛选程序 70
3.16 收回异常 71
3.17 非正常终止 72
3.18 复习 73
3.19 实验二:结构化的异常处理 74
第四章 创建/启动一个进程 75
4.1 概述 75
4.2 进程定义 76
4.3 进程属性 77
4.4 进程资源 78
4.5 进程间通信 79
4.6 管道 81
4.7 进程创建 82
4.8 设置启动窗口消息 83
4.9 进程消息 84
4.10 继承 85
4.11 安全属性 86
4.12 进程句柄 87
4.13 控制一个进程 88
4.14 终止一个进程 89
4.15 合适的API函数 90
4.16 读和写句柄 91
4.17 复习 92
4.18 实验三:创建/启动一个进程 93
第五章 线程和同步 94
5.1 概述 94
5.2 定义 95
5.3 进程的梗概 97
5.4 线程调度 98
5.5 线程抢占 99
5.6 线程优先级 100
5.7 为何使用多线程? 101
5.8 线程额外开销 102
5.9 线程创建API函数 103
5.10 CreateThread举例 104
5.11 CalculationThreadProc举例 105
5.12 线程ID和句柄 106
5.13 线程终止 107
5.14 C运行时间库 109
5.15 实验四:线程和同步 110
5.16 线程同步函数 111
5.17 在对象上等待 112
5.18 事件对象 113
5.19 使用事件对象 114
5.20 排它对象 115
5.21 利用排它对象 116
5.22 信号灯对象 117
5.23 利用信号灯对象 118
5.24 临界区 119
5.25 使用临界区 120
5.26 线程和信息队列:Windows 3.1模型 121
5.27 线程和信息队列:Win32模型 122
5.28 API函数 123
5.29 复习 125
5.30 实验四:线程和同步 126
第六章 标准I/O 127
6.1 概述 127
6.2 I/O系统的组成部分 128
6.3 SCSI分层 129
6.4 内部对象 130
6.5 超高速缓存管理器 131
6.6 同步I/O处理 132
6.7 异步I/O处理 133
6.8 同步的/异步的I/O 134
6.9 异步过程调用(APC) 135
6.10 文件I/O的API 136
6.11 使用事件的异步I/O 137
6.12 使用I/O完成例行程序的异步I/O 138
6.13 标准的输入和输出 139
6.14 复习 140
6.15 实验五:标准I/O 141
第七章 内存管理 142
7.1 概述 142
7.2 地址空间 143
7.3 虚拟内存 144
7.4 页目录、页表、页帧 145
7.5 分页文件 146
7.6 页面提交 147
7.7 拷贝写和保护文件 149
7.8 API函数:HeapAlloc 150
7.9 API函数:LocalAlloc\GlobalAlloc 151
7.10 API函数:C运行时间库 152
7.11 API函数:VirtualAlloc 153
7.12 实验六:内存管理 154
7.13 内存共享 155
7.14 GMEM_DDESHARE 156
7.15 内存映射文件的视图 157
7.16 GreateFileMapping和OpenFileMapping 158
7.17 MapViewOfFile和UnmapViewOfFile 159
7.18 使用内存映射文件来共享内存 160
7.19 基指针 161
7.20 复习 162
7.21 实验六:内存管理 163
8.1 概述 164
第八章 动态连接库(DLL) 164
8.2 DLL映射 165
8.3 调用/执行 166
8.4 实例数据 167
8.5 线程局部存储 168
8.6 单一进入和退出点:DllEntryPoint 169
8.7 DllEntryPoint代码举例 170
8.8 线程同DLL的连接与分离 172
8.9 动态安装 173
8.10 终止与退出 174
8.11 C运行时间库 175
8.12 SS!=DS不再是问题 176
8.13 编译DLL代码 177
8.14 连接DLL 178
8.15 建立共享内存 179
8.16 DLL模块定义文件 180
8.17 输入和输出函数 181
8.18 与3.1的区别:数据在应用程序中的共享 182
8.19 与3.1的区别:实例数据 183
8.20 复习 184
8.21 实验七:动态连接库(DLL) 185
第九章 远程过程调用(RPC) 186
9.1 概述 186
9.2 什么是RPC 187
9.3 RPC构件 191
9.4 RPC如何工作 192
9.5 传输 193
9.6 名字服务 194
9.7 RPC运行时间:函数 195
9.8 界面定义语言 196
9.9 MIDL编译器需要什么 198
9.10 应用程序配置文件(.ACF) 199
9.11 联编 200
9.12 联编和联编句柄 201
9.13 MIDL编译 202
9.14 输出文件生成 203
9.15 建立过程 204
9.16 熟悉的过程调用模型 205
9.17 .IDL文件 206
9.18 .ACF文件 207
9.19 RPC所需函数 208
9.20 调用RPC服务器API函数 209
9.21 调用RPC客户机API函数 211
9.22 MDIL编译 212
9.23 演示:RPC代码的指导 213
9.24 复习 214
9.25 实验八:远程过程调用(RPC) 215
第十章 精调基于Win32的应用程序 216
10.1 概述 216
10.2 性能工具 217
10.3 演示 218
10.4 复习 219
第十一章 国际化和统一代码 220
11.1 概述 220
11.2 什么是统一代码 221
11.3 编码方案设计 222
11.4 Win32 中的统一代码 223
11.5 统一代码编程 224
11.6 数据类型 225
11.7 函数原型 226
11.8 基本转换步骤 227
11.9 Window类 229
11.10 消息 230
11.11 C运行时间扩展 231
11.12 文件名 232
11.13 字节指令标记 233
11.14 识别统一代码文件 234
11.15 复习 236
11.16 实验九:统一代码 237
附录A 样例程序清单 238
附录B 有关论文 246
将基于Windows的16位的应用程序移植到Win32中 247
Windows NT中的虚拟内存管理器 263
Win32中的DLL 278
实验手册 293
概述 293
实验一 移植到一个32位的平台 298
练习1 将一个16位的应用程序移植到一个32位的平台上 298
实验二 结构化异常处理 300
练习1 实验结构化异常处理 300
练习2 (可选)使用系统默认异常筛选程序 301
练习3 实现一个样本筛选程序 302
实验三 启动并创建一个进程 304
练习1:创建并控制一个进程 304
实验四 线程和同步 308
练习1 创建一个线程并使它运行 308
练习2 创建并同步多线程 310
实验五 标准I/O 312
练习1 执行异步文件I/O 312
实验六 内存管理 314
练习1 用Heap API管理内存 314
练习2 通过内存映射文件来共享内存 315
实验七 DLL 317
练习1 创建一个32位的DLL 317
实验八 远程过程调用(RPC) 319
练习1 实现一个RPC的应用程序 320
实验九 国际化和统一代码 321
练习1 把一个应用程序转换成统一代码 321