目 录
译者序
前言
第一部分 Windows2000 核心技术
第1章 WindowsDNA概述
1.1Windows和WindowsNT的历史
1.2WindowsDNA剖析
1.3WindowsDNA的结构
1.3.1COM
1.3.2表示层
1.3.3防火墙层
1.3.4业务逻辑层
1.3.5数据层
1.4小结
第2章 虚拟内存和内存管理
2.1使用虚拟内存
2.2使用虚拟内存的时机
2.2.1保留一定的虚拟内存
2.2.2提交一个虚拟内存页面
2.2.3锁定虚拟内存页面
2.2.4释放虚拟内存页面
2.2.5为其他进程分配内存
2.3使用虚拟内存的例子
2.4Windows2000堆函数
2.4.1Windows2000下的堆管理
2.4.2在C++类中使用私有堆
2.5小结
第3章 线程和进程
3.1进程和线程
3.2管理进程
3.2.1使用CreateProcess函数
3.2.2结束进程
3.3管理线程
3.3.1创建线程
3.3.2结束线程
3.3.3取出并改变线程的优先级
3.3.4线程局部存储
3.3.5判断线程的标识符
3.3.6使用线程相似性
3.3.7使多个线程合作
3.3.8何时应创建线程
3.3.9何时不应创建线程
3.4同步
3.4.1使用Win32互锁操作
3.4.2临界区
3.4.3管理事件
3.4.4信号灯与互斥
3.5信号量
3.5.1信号量和等待函数
3.5.2信号量应用程序
3.5.3创建信号量
3.5.4返回信号量控制的资源
3.6在应用程序中使用信号量和临
界区
3.7使用作业对象
3.7.1控制作业对象属性
3.7.2作业对象实例
3.8小结
第4章 文件
4.1使用Windows2000文件系统
4.2执行通用文件操作
4.2.1收集卷信息
4.2.2文件系统标志
4.2.3例子
4.2.4打开、关闭和删除文件
4.2.5写文件
4.2.6读文件
4.3查找文件
4.3.1使用FindFirstFile、FindNextFile
和FindC1ose
4.3.2即将面世的FindFirstFileEx
4.3.3使用FILETIME结构
4.4执行其他文件操作
4.4.1使用CopyFile
4.4.2使用MoveFile
4.4.3使用SetFilePointer
4.4.4使用GetFileSize
4.5使用异步输入输出
4.5.1使用重叠的输入和输出
4.5.2使用文件完成例程
4.5.3使用文件完成例程的例子
4.6利用加密文件系统
4.7使用文件通知函数
4.8小结
第5章 结构化异常处理
5.1异常处理的基础知识
5.2SEH工作原理
5.3使用终止处理程序
5.3.1使用__leave来离开__try块
5.3.2使用正常和反常终止
5.4使用异常处理程序
5.4.1使用异常过滤器
5.4.2处理浮点异常
5.5C++异常处理
5.5.1使用异常来检测错误
5.5.2在错误产生后使用异常清除
5.5.3使用标准异常库
5.5.4使用运行异常
5.5.5使用逻辑异常
5.5.6检测构造时的错误
5.6把Win32SEH与C++异常处理集成
起来
5.7小结
第6章 动态链接库
6.1理解库
6.1.1静态链接库
6.1.2动态链接库
6.1.3使用DLL的好处
6.1.4使用DLL的不利之处
6.2创建和使用动态链接库
6.2.1DLL初始化
6.2.2导出和导入DLL函数和数据
6.2.3在装入期间装入DLL
6.2.4在运行时装入DLL
6.2.5DLL版本控制
6.2.6创建DLL共享内存
6.2.7简单的DLL实例
6.2.8使用C++和DLL
6.2.9使用MFC和DLL
6.3通用替换程序
6.3.1通用替换程序的结构
6.3.2通用替换程序函数
6.3.3通用替换程序实例
6.3.4通用替换程序的调试
6.4 小结
第7章 分布式安全性
7.1Windows2000安全性概述
7.2基本安全性数据结构
7.2.1进程和线程安全性令牌
7.2.2安全标识符
7.2.3ACE、DACL和SACL结构
7.2.4判断ACL所需的大小
7.2.5给DACL添加允许访问的ACE
7.2.6安全描述符
7.2.7获取安全描述符
7.2.8使用安全属性结构
7.3基于委托的访问控制
7.3.1TRUSTEE结构
7.3.2ACTRL_ACCESS_ENTRY
结构
7.3.3ACTRL_ACCESS_ENTRY_LIST
结构
7.3.4ACTRL_PROPERTY_ENTRY
结构
7.3.5ACTRL_ACCESS结构
7.4模仿客户程序
7.5小结
第8章 Wind0ws2000调试技术
8.1Windows调试策略
8.2使代码易于调试
8.2.1Windows2000的调试支持
8.2.2MFC调试支持
8.3Windows2000调试技术概述
8.3.1符号调试信息
8.3.2Microsoft调试工具
8.3.3第三方调试工具
8.4VisualC++集成的调试工具
8.4.1VisualC++调试工具的基本知识
8.4.2窗口中的内容
8.4.3VisualC++调试工具技巧
8.5Windows调试工具WINDBG
8.6使用Softlce调试程序
8.7使用Dr.WAtson
8.8使用BugTrapper
8.9第三方工具的来源
8.9.1CompuwareNuMegaLab
8.9.2MutekSolutions有限公司
8.9.3Rational
8.10小结
第9章 Wind0ws2000服务
9.1服务
9.1.1与Windows2000服务相交互
9.1.2Windows2000服务和系统安全
9.2编程实现Windows2000服务
9.2.1用服务状态更新服务控制管理器
9.2.2Windows2000服务的生存周期
9.2.3停止Windows2000服务
9.2.4往Windows2000事件日志中写
数据
9.3Windows2000服务的例子
9.4小结
第10章 控制Windows2000服务
10.1编写服务控制程序
10.1.1使用服务控制管理器注册服务
10.1.2取消注册服务
10.1.3自动重启出错的服务
10.2编写控制面板小程序
10.2.1控制面板小程序接口
10.2.2CtlFileSpy:FileSpy的控制面板
小程序
10.3小结
第二部分 用户交互/桌面
第11章 高级图形设备接口编程
11.1GDI基础
11.2设备描述表
11.2.1GDI映射模式
11.2.2GDI对象及其用法
11.3位图
11.3.1DDB与DIB
11.3.216色DIB
11.3.3256色DIB
11.4DIB例子
11.4.1CDIBitmap类
11.4.2CBmpPalette类
11.4.3CDibDoc类的修改
11.4.4主窗体类的修改
11.4.5CDibView类的修改
11.5路径
11.6元文件
11.7元文件的例子
11.7.1CMetaView类声明的修改
11.7.2CMetaView类析构函数的修改
11.7.3对CMetaView:OnInitialUpdate
的修改
11.7.4鼠标左击
11.7.5对CMetaView:OnDraw的修改
11.8小结
第12章 所有者作图和定制作图
12.1使用所有者作图控件
12.2实现所有者作图控件
12.2.1处理WM_DRAWITEM消息
12.2.2处理WMMEASUREITEM
消息
12.2.3处理WM_COMPAREITEM消息
12.2.4处理WM_DELETEITEM消息
12.3所有者作图实例:OWnDraw
12.3.1创建CListItem结构
12.3.2处理所有者作图消息
12.3.3向列表框中加入项目
12.3.4处理WM_MEASUREITEM消息
12.3.5处理WM_DRAWITEM消息
12.3.6处理WM_DELETEITEM消息
12.4使用定制作图
12.4.1定制作图所使用的数据结构
12.4.2CustDraw:使用MFC的定制作
图实例
12.5小结
第三部分 COM和Active
第13章 COM和OLE
13.1COM和OLE概述
13.2常用COM和OLE技术
13.2.1复合文档
13.2.2可视化编辑
13.2.3自动化
13.2.4OLE数据传输
13.2.5拖放
13.2.6与其他应用程序集成
13.3使用COM和OLE编程
13.3.1使用COM接口
13.3.2标识COM接口和对象
13.3.3处理GUID
13.3.4处理版本问题
13.3.5使用IUnknown接口
13.3.6创建对象
13.4COM组件的一个例子
13.4.1使用Shell扩展机制
13.4.2理解快捷菜单扩展
13.4.3创建实例
13.5小结
第14章 自动化
14.1创建使用自动化的可编程应用程序
14.2IDispatch接口
14.2.1IDispatch使用的数据类型
14.2.2IDispatch中的函数
14.2.3IDispatch接口与虚函数表
14.3创建使用MFC的自动化服务程序
14.3.1修改自动化选项
14.3.2修改文档类
14.3.3为AutoBub创建对话框
14.3.4为AutoBub画泡泡对象
14.3.5往AutoBub中加入自动化支持
14.4使用VisualBasic创建自动化控制
程序
14.5在VBScript中使用自动化
14.6小结
第15章 OLE拖放
15.1OLE剪贴板
15.1.1使用FORMATETC和
STGMEDIUM结构
15.1.2处理FORMATETC结构
15.1.3使用DVTARGETDEVICE结构
15.1.4使用STGMEDIUM结构
15.1.5使用IDataObject接口
15.2使用OLE拖放
15.2.1OLE拖放来源
15.2.2OLE拖放目标
15.3拖放实例
15.4 小结
第16章 COM线程化模型
16.1COM线程化方案
16.1.1进程内COM服务程序
16.1.2进程外服务程序
16.1.3管理进程间的内存
16.1.4使用住所中的COM
16.2STA 和MTA
16.2.1为每个线程选择一个住所
16.2.2线程的最佳住所
16.2.3为COM对象选择住所
16.2.4在客户程序和COM对象间不匹配
的住所
16.3在COM住所间调度
16.3.1共享接口指针的错误方法
16.3.2共享接口指针的正确方法
16.4小结
第17章 COM对象
17.1使用IDL
17.1.1深入MIDL属性
17.1.2编译MIDL源文件
17.1.3使用类型库
17.1.4使用IDL中的结构
17.1.5使用IDL中的枚举类型
17.1.6指针和IDL
17.1.7使用IDL中的方向属性
17.2使用ATL创建定制组件
17.2.1常用的ATL类
17.2.2ATLCOM接口映射
17.2.3使用ATL向导
17.2.4将代理/存根代码合并到DLL中
17.2.5一个定制COM对象的示例
17.3使用moniker
17.3.1系统moniker的示例
17.3.2创建moniker实例
17.3.3将moniker转换为文本字符串
17.3.4根据显示名创建moniker
17.4连接点
17.5定制调度
17.5.1深入定制调度
17.5.2深入按值调度
17.5.3实现定制代理
17.5.4在服务器上实现IMarshal
17.5.5比较使用定制代理和标准代理
的性能
17.6小结
第18章 ActiveX控件
18.1什么是ActiveX控件
18.2ActiveX控件接口
18.3ActiveX控件的属性 事件和
方法
18.3.1属性
18.3.2事件
18.3.3方法
18.4一个ActiveX控件示例
18.4.1创建工程
18.4.2绘制控件
18.4.3定义AxEdit的属性
18.4.4字符输入处理
18.4.5修改控件的位图
18.5测试ActiveX控件
18.5.1选择控件的测试容器
18.5.2使用TSTCON32测试容器
18.5.3测试属性
18.6使用ATL创建ActiveX控件
18.6.1使用ATL实现stock属性
18.6.2使用ATL实现custom属性
18.6.3通过ATL使用ambient属性
18.6.4在ATL工程中实现事件
18.6.5添加消息和事件处理程序
18.7用ATL构建的ActiveX控件
18.7.1PopButton的基本设计思路
18.7.2创建PopBtn工程
18.7.3用VisualBasic测试PopButton
控件
18.8小结
第19章 异步COM
19.1COM中的同步方法和异步方法
19.2Windows2000中对异步方法的
支持
19.2.1IDL中的异步支持
19.2.2Windows2000中其他新的异步
组件
19.2.3使用Fire和Forget模式
19.3一个异步COM的示例
19.3.1IShop接口
19.3.2AsyncTest工程
19.3.3一个同步测试客户
19.3.4IShop接口的第二版
19.3.5一个异步测试客户
19.4小结
第20章 DCOM
20.1位置透明性
20.1.1创建远程对象的实例
20.1.2使用IMultiQI接口
20.1.3确定外部引用是否有效
20.2DCOM中的安全性
20.2.1安全性的类型
20.2.2深入调用安全性
20.2.3深入模仿与伪装
20.2.4设置计算机的安全级别
20.2.5设置进程的安全属性
20.2.6深入安全模块
20.2.7设置接口的客户端安全属性
20.2.8管理服务器端的安全性
20.3使用DCOM配置程序
20.3.1使用DCOMConfig设置系统
端属性
20.3.2使用DCOMConfig设置特定
AppID的属性
20.4小结
第四部分 COM+
第21章 COM+服务简介
21.1事务简介
21.1.1ACID:事务处理的四大特性
21.1.2事务的分类
21.1.3两阶段提交协议
21.2深入COM+内的事务
21.3构建一个可支持事务处理的COM+
组件
21.3.1使用VisualBasic构建COM
对象
21.3.2启示
21.3.3向COM+应用程序中添加组件
21.4小结
第22章 构建COM+服务组件
22.1好的ComponentService组件
22.1.1生命周期/无状态
22.1.2无状态对象
22.1.3活动
22.2编写事务组件
22.2.1创建通用事务组件
22.2.2使用VisualC++创建事务性
COM+对象
22.2.3使用VisualBasic创建事务性
COM+对象
22.3使用COM编译器支持类
22.3.1TLH和TLI:检查输出
22.3.2COM编译器命令属性
22.3.3使用com_error产生和捕捉
错误
22.3.4使用任何数据:_variant_t
22.3.5使用BSTR:_bstr_t
22.4使用多个COM+对象
22.4.1组合COM+对象的事务生命
周期
22.4.2有多个对象参与的事务的输出
22.4.3错误处理
22.4.4传递参数和接口
22.5小结
第23章 使用IIS与COM+
23.1Web应用程序基础
23.1.1ASP概览
23.1.2脚本示例
23.1.3ASP应用程序
23.1.4内置的ASP对象
23.2构建Web应用程序
23.3实现方法
23.3.1对HTML窗体的处理
23.3.2管理cookie
23.3.3创建cookie
23.3.4ServerVariables集合
23.3.5对ASP错误的处理
23.3.6定义全局关键字
23.3.7强制次序
23.3.8用JavaScript简化重定向过程
23.3.9管理对象的更为简单的方法
23.3.10使用二进制数据
23.3.11编写动态代码
23.3.12动态地调整内容的大小
23.3.13数据验证
23.3.14下载文件
23.3.15发送email
23.3.16浏览器的功能
23.4组件开发
23.4.1一个简单的ASP组件
23.4.2内容更丰富的ASP组件
23.5事务性的ASP页
23.6小结
第24章 使用COM+驻留内存数据库
24.1驻留内存数据库
24.2一个简单的示例
24.2.1创建IMDB
24.2.2创建IMDB数据源
24.2.3引用资源表
24.3IMDB的一些细节问题
24.3.1在OLEDB级支持哪些接口
24.3.2特定条件是如何与OLEDB使用
者模板相关的
24.3.3ADO使用的细节
24.4小结
第25章 高级COM+服务
25.1通过对象共享和负载平衡获得可扩
展性
25.1.1实现IObjectControl
25.1.2动态负载平衡
25.2一些高级的事务概念
25.2.1避免死锁和阻塞
25.2.2IObjectConstruct接口
25.2.3特定情况下的事务控制
25.2.4由客户控制事务
25.3排队组件
25.3.1什么是排队组件
25.3.2排队组件是如何工作的
25.3.3编写排队组件
25.3.4使用排队组件发送返回消息
25.4异步分发信息
25.4.1出版者/订户结构简介
25.4.2构建出版者/订户工程
25.5小结
第五部分 分布式Wind0ws2000服务
第26章 管道
26.1管道的类型
26.2无名管道
26.2.1创建和关闭无名管道
26.2.2管道的读和写
26.2.3使用无名管道与另一进程通信
26.2.4使用无名管道的一个示例
26.3有名管道
26.3.1有名管道的类型
26.3.2创建和关闭有名管道
26.3.3连接和使用有名管道
26.3.4使用有名管道的示例
26.4小结
第27章 活动目录
27.1活动目录概览
27.1.1名字空间组织
27.1.2树和森林
27.2使用ADSI管理活动目录
27.2.1在VisualBasic和VisualC++中
使用ADSI
27.2.2ADSI绑定字符串
27.2.3ADSI辅助函数
27.2.4无服务的绑定和ADSI
27.2.5ADSI所提供的COM接口
27.3其他资源
27.4小结
第28章 MSMQ
28.1MicrosoftMessageQueueServer
简介
28.1.1MSMQ和有名管道
28.1.2安装MSMQ
28.1.3消息队列的类型
28.1.4公用队列和专用队列
28.2MSMQ对象属性
28.2.1队列属性
28.2.2消息属性
28.2.3机器属性
28.2.4内存分配
28.3使用Win32API创建和管理消息
队列
28.3.1创建消息队列
28.3.2打开已有的队列
28.3.3向消息队列发送消息
28.3.4从消息队列中接收消息
28.3.5关闭消息队列句柄
28.3.6删除消息队列
28.4用VisualBasic编写的消息队列客户
程序
28.5小结
第29章 集群服务器
29.1集群服务器的结构
29.1.1集群服务器的硬件
29.1.2MSCS软件组件
29.1.3集群的启动和恢复
29.2集群API
29.2.1集群对象管理API
29.2.2资源DLLAPI
29.2.3集群管理扩展API
29.3一个可感知集群的示例
29.3.1ClusterQuote工程
29.3.2QuoteClient工程
29.3.3HighAvailabilityQuotes集群资源
类型
29.4小结
· · · · · · (
收起)