第1章 编写可移植的Windows应用程序 1
为什么移植是困难的 1
避免移植性问题 2
Windows API的变化 4
消息处理的修正 4
Win32的特点 8
附录 10
第2章 管理Win32动态链接库中的内存 12
建立Windows NT和Windows 9x中的DLL 12
管理内存 22
先进的内存管理 27
小结 33
第3章 共享内存和消息队列——OS/2、AIX和Windows NT/2000中的C++类 34
共享内存 34
消息队列 39
测试程序 46
小结 46
第4章 使内存映像文件变得简单 47
简单介绍 47
其他用途 48
限制 48
CFileMap类 49
将一个文件映射到内存中 56
存取数据 57
任何任务都要保证安全 57
一个例子:poker.exe 58
小结 59
第5章 终极Windows版本检测程序 60
一个平台和版本检测程序 61
IsWindowsForWorkgroups() 67
WTest例子程序 68
DOS程序怎么办 69
小结 72
第6章 Unicode与软件国际化——国际应用程序开发的软件设计导则 73
Unicode标准 73
Unicode联盟 74
Unicode支持的实现 75
指针算法的普遍问题 77
宽字符函数 78
透明字符宏 78
字符标准的混合和转换 79
读写Unicode文本文件 80
Unicode的前景 80
第7章 一个实现异步通信的WindowsNT/2000 C++类 81
Win32文件I/O函数 83
创建CFileIO类 88
使用CFileIO类 94
小结 99
第8章 Windows下的数据对象列表对话 100
对象列表 100
数据对象 102
对话类 104
对话 111
列表对话 112
数据对象列表对话 115
一个例子 116
第9章 Windows NT/2000下的打印 122
Windows NT/2000打印子系统中的内部 122
新的Win32打印例程 125
后台绑 128
不再需要强制函数 128
图形引擎支持的过渡调色 129
创建CPrint类 132
使用CPrint类 134
创建CPrinterForm类 144
使用CPrinterForm类 145
源代码 146
第10章 Windows NT/2000中的枚举进程 147
理解系统注册性能数据 148
查询对象和计数器名 150
装载数据块 154
查找特定计数器 156
解析数据块 158
EnumProcesses过程 165
调用库 166
小结 168
第11章 Windows NT/2000控制台编程 169
从控制台I/O开始 171
全屏寻址 174
控制颜色属性 175
读字符输入 176
鼠标支持 176
窗口的滚动和改变大小 178
一个API中间层 178
第12章 跨平台通信类——OS/2、AIX和Windows NT/2000的C++信号灯类 179
通信机制 179
编写跨平台类 181
信号灯 183
抽象基类 183
互斥信号灯 188
事件信号灯 190
osSemphore的实现 193
小结 193
第13章 怎样编写一个NT/2000服务 194
什么是服务 194
安装服务 196
服务接口 199
服务模板 200
调试服务 206
在应用程序中管理服务 207
小结 207
第14章 使用Windows NT/2000事件日志 208
什么是消息编译器 209
事件是由什么构成的 209
修改注册表 210
创建消息文件 211
EventLog类 216
使用EventLog类 222
小结 224
参考文献 224
第15章 Windows NT/2000远程调用 225
RPC:分布计算的基础 225
RPC的设计与目标 226
接口定义语言 227
绑定 228
绑定句柄 228
RPC与常规调用 228
一个RPC例子 229
客户初始化 239
客户计算 240
服务器 241
创建例子 248
第16章 Windows NT/2000安全技术内幕 250
什么是安全 250
用户信息概述 251
对象信息概述 252
什么是NT/2000对象 253
规划一个访问请求 254
SID的详细说明 255
权限 255
安全描述符 256
DACL 257
DACL算法 261
一个安全的例子 264
小结 274
第17章 在Windows NT/2000的调试器中设置断点 275
连接被调试的进程 276
接收事件通知 277
一个简单的调试监视器 277
通用调试任务 281
断点:Stepper程序 282
符号信息的捷径 283
命令事件与调试事件 285
断点异常 291
硬断点的单步执行 295
设置和删除断点指令 297
其他断点函数 301
小结 306
第18章 PC的对称多进程——编写Fortran NT应用程序的技巧和工具 307
SMP的产生与结果 310
创建选项的考虑 312
进程之间的共享块 313
控制台输入和输出 317
混合语言的问题 317
32位DLL与16位应用程序 318
小结 321
第19章 使用C++的多精度整数算法 322
设计问题与实现的选择 323
构造一个多精度整数 325
比较多精度整数 326
多精度算法 328
二进制向十进制的转换 329
测试 331
性能 333
小结 333
第20章 多任务Fortran与Windows NT/2000——从Fortran直接调用Win32 API 336
进程与线程 336
时间分割 337
创建线程 337
同步化 339
临界区 345
互斥、信号灯与事件 350
创建进程 352
使用命名对象 354
继承句柄 357
小结 358
第21章 从NT/2000到Win95/98的环境转换性能 359
性能为什么重要 359
同步化结构 359
事件环境转换测试 360
为什么使用三个互斥 367
函数调用和系统调用 368
结果 368
小结 370
致谢 370
第22章 编写一个Windows NT/2000下控制面板应用程序 371
CPlApplet()入口点 371
初始化消息 372
用户启动消息 372
结束消息 373
为扫描仪小程序选择特性 373
小程序的用户界面设计 374
创建扫描仪CPL 374
Windows NT/2000的不同之处 389
创建一个厂家指定的DLL例子 390
增加一个CPL 393
启动一个控制面板应用程序 394
去向何方 394
第23章 Windows NT虚拟设备驱动程序 396
16位应用程序通过VDD调用Win32 API 396
编写一个应用程序截取VDD 406
编写一个NTVDM截取VDD 413
VDD主入口点 417
支持一个与硬件相关的16位应用程序 424
第24章 直接端口I/O与Windows NT/2000——未公开的直接控制硬件设备特性 447
在NT/2000中完成I/O保护 448
NT/2000 TSS的细节 449
视频端口函数 449
进一步研究 450
向一个进程授予访问权 453
另一种方法 456
直接访问 460
I/O计时 461
当心 462
可移植性 463
小结 464