发新话题
打印

Windows 2000系统编程

Windows 2000系统编程

前 言

引用Grateful Dead的格言:“陌生的旅途令人感到漫长。” 如果你是编程人员,那么你一定了解许多事情已经改变。我经历了从穿孔卡、纸带、到CD-ROM和兆字节的RAM;从冷藏库大小的计算机到运行冷藏库的计算机;从对在线打印机的Snoopy日历表到运行在掌上电脑的日历表。在办公方面的飞速进步常常造成编程人员陷入老一套。第一种老套表现在墨守成规。有一天会发现,世界(至少你的公司)终将发生改变。例如,当在公司工作时,你从使用UNIX转换到使用Windows,许多使用UNIX的老家伙却大声地抱怨。我喜欢UNIX,但我总是愿意学习一些新东西。第二种老套更加险恶。
       当操作系统(如Windows)升级和改变的时候,保持不变并忽略新技术及其特性较为容易。如果你早早开始用一个特别的系统的话,这种情况尤其不好。开始使用Windows 3.1的编程人员应当忘却老习惯,但有时它们却不能忘却老习惯。以旧的方式编写代码是容易的,因为,过去Windows的新版本还支持老的方式。旧式的编程也许轻松自在,但对编程常常是有害的。使用旧的编程技术会引起程序消耗了过多的存储器,影响到多任务处理性能,且使你享受新的操作系统特性更困难。用Windows 2000,就不必了解一些旧习惯。如果你熟悉UNIX或其他操作系统,你就会发现Windows 2000是一个具有完整功能的环境。它比任何现在的操作系统做同样的事更漂亮,当然你也许不得不了解实现旧诀窍的新方法。如果你是Windows编程的老手,你就会发现在Windows 2000中的新特性和微妙的差别。

       不管怎么说,使用Windows 2000可以有更多的时间了解Windows。本书的内容本书叙述了如何使用Windows 2000以获得更大的利益。从存储器管理到联网的广泛主题包括你能够检查的说明性程序,你甚至可以“借用”一些代码。许多示例程序使用不加修饰的控制台界面,以使你能够直接钻研有关的细节。虽然这些程序不需要更多的标准的Windows编程的知识,其他一些使用MFC并且至少需要了解一些基本的Windows应用程序编程的知识。使用现代工具,你能够轻松地创建Windows程序。但若没有使用特殊的Windows特性,你就不会真正得到完全的成功。毕竟,如果只使用标准的C或C++,你可以编写很好的UNIX或DOS程序。如果你不利用特殊的Windows特性,为什么使用Windows 呢?作为一个例子,考虑这个方案:假设你在编写分析视频信号的程序。任何一个现在的操作系统都将需要分配大块的存储区(即,用malloc)来存储这些信号。但使用Windows,你能够使用特殊的操作系统特性,以便更有效地分配需要的存储器。本书的目的就是介绍如何利用Windows 2000的优势。如何使编程人员编写更快、更小或更好的程序。
      本书的目标为了从本书获得更多的知识,就应当首先了解一些Windows 编程技术。本书首先着重介绍由操作系统所提供的服务程序。虽然它包含一些传统的GUI程序,多数程序强调存储器管理、多任务处理和连网的功能。如果你是一个C++编程人员,本书介绍了如何更好地使用Windows所提供的工具。使用其他语言的编程人员,也能够从Windows提供的服务程序的有关信息获益。当读完本书时,你就能够使用Windows的多任务处理、存储器管理和进程间通信。你还将了解服务程序、管理控制台和重叠的I/O。另外,本书还介绍有关安全、注册表、登录和外壳程序的编程。本书涉及内容很广,涉及到Windows要提供的许多内容。因此,在每章末尾的“直接解答”小节里提供了各章的细节和实际的劝告,你将能够更快地使用好Windows。系统需求任何版本的Windows 2000都可以运行本书提供的多数示例程序,但我们是用Windows 2000服务器运行的,某些程序可以运行在Windows NT 4上,少量程序也能运行在Windows 98上(也许会降低其功能)。本书里的所有程序都使用Microsoft的Visual C++编写(Visual Studio 98包括的版本)。  
      如果你使用其他语言,就会在第1章得到一些指导。然而,你必须自己建立本书提供的材料和你所使用语言之间的联系。阅读方法千里之行,始于足下。在你的需求基础上,迈开你的第一步。如果你想了解全部内容,就按顺序阅读每一章。也可以浏览目录,并选择有直接需要的章节。每章结尾都有“直接解答”小节,介绍相关主题要点。如果你十分忙,就可以考虑从“直接解答”开始,并且参考相关章节的主要部分。每一章包括了说明其主题的代码。完整的代码则包括在附带的CD-ROM中。不管你如何阅读这本书,只读本前言,将不会了解得更多。挑选主题,去开始深入Windows 2000的陌生旅途吧!英文原书书号:1-57610-280-7
-----------------------------------------------------------------------------
复制内容到剪贴板
代码:
目      录
译者序
前言
第1章   纵览Windows 2000        1
1.1   新的语言        1
1.2   Windows简史        2
1.2.1   Windows NT        3
1.2.2   Windows 95        3
1.2.3   其他方面        4
1.3   Windows版本        4
1.4   Windows体系结构        5
1.4.1   实际情况        6
1.4.2   Win95与Win98        6
1.5   Windows的特性与差别        7
1.5.1   多任务处理与线程处理        7
1.5.2   UNICODE        9
1.5.3   文件系统问题        9
1.5.4   DLL        10
1.6   开发工具        10
1.7   直接解答        11
1.7.1   开发工具的选择        11
1.7.2   Windows 的体系结构        11
1.7.3   理解进程        11
1.7.4   从C++中调用API        12
1.7.5   从VB中调用API        12
1.7.6   从Visual J++中调用API        12
1.7.7   Internet资源        13
第2章   ActiveX 配套工具        14
2.1   ActiveX与Java        15
2.2   定义        15
2.3   ActiveX对象的结构        16
2.4   对象        17
2.5   代码的重用        18
2.6   多态性        19
2.7   几个其他的ActiveX特性        20
2.7.1   HRESULT和SCODE        20
2.7.2   GUID/UUID/IID        20
2.8   关于IUnknown        21
2.9   创建对象和寻找界面        22
2.10   关于索引的计数        23
2.11   关于聚集        23
2.12   奇妙的特性        24
2.12.1   预定义界面        25
2.12.2   类型库        25
2.12.3   代理程序、承接程序、调度程序        25
2.12.4   关于多线程        27
2.13   ActiveX/C++的连接        27
2.14   为什么不直接使用C++        28
2.15   系统注册表        28
2.16   注册表:在近亲的和个人的之上        28
2.17   注册表的奇妙之处        30
2.17.1   RegEnumValue        30
2.17.2   RegDeleteKey        30
2.17.3   错误返回        31
2.17.4   数据类型        31
2.17.5   检查注册表代码        31
2.18   操作注册表        32
2.19   注册对象        32
2.20   类的安装        34
2.21   使用REGEDIT        34
2.22   自注册        35
2.22.1   自注册EXE文件        36
2.22.2   自注册DLL文件        36
2.23   人格化对象        36
2.24   类型库        37
2.24.1   类型库在哪里        38
2.24.2   创建类型库        39
2.24.3   类型库的隐蔽        41
2.25   宏        42
2.26   了解客户的基础        42
2.27   简单的服务器程序设计        45
2.27.1   一般服务器程序的发布        46
2.27.2   服务器程序的用法        46
2.27.3   类站        46
2.28   简单的客户程序        46
2.29   EXE服务程序        48
2.29.1   如何运作        53
2.29.2   没有取值        54
2.29.3   调度程序        54
2.29.4   编写Script        55
2.29.5   现在就运行        56
2.29.6   关于服务器程序        56
2.30   DLL服务器程序        56
2.31   支持多界面        60
2.32   MFC技术        61
2.32.1   MFC的EXE服务器程序        61
2.32.2   其他考虑        70
2.32.3   MFC的DLL服务器程序        70
2.33   MFC聚合        71
2.34   IDispatch        72
2.34.1   BSTR、SAFEARRAY及
       VARIANT        73
2.34.2   返回Invoke        76
2.34.3   简化IDispatch        77
2.34.4   绑定时间和效率        85
2.35   新领域:COM+        85
2.36   直接解答        87
2.36.1   在命令解释程序中的ActiveX        87
2.36.2   了解注册表        88
2.36.3   公用界面指南        89
2.36.4   对IDispatch使用MFC        89
2.36.5   对最初的界面使用MFC        89
2.36.6   关于ATL        89
第3章   进程、线程和纤程        90
3.1   其他操作系统        90
3.2   进程        91
3.3   CreateProcess        93
3.4   作业与工作区        97
3.5   线程        97
3.6   MFC 和线程        99
3.7   线程的局部存储        100
3.8   纤程        103
3.9   APC        104
3.10   直接解答        106
3.10.1   运行新程序—最容易的方式        106
3.10.2   运行新程序—有点难度的方
       式        106
3.10.3   运行新程序—最难的方式        106
3.10.4   等待程序完成,设置(或读取)退
       出代码        107
3.10.5   用Windows API创建新线程        107
3.10.6   用C++库创建新线程        107
3.10.7   使用线程与MFC        107
3.10.8   创建MFC工作线程        108
3.10.9   创建MFC 的UI线程        108
3.10.10   使窗口和消息对话框显示在上
        面        109
3.10.11   获得进程和线程的句柄        109
3.10.12   等待线结束,设置(或读取)
        线程退出代码        109
3.10.13   操纵MFC线程        110
3.10.14   了解MFC返回值        111
3.10.15   完整的MFC示例        111
3.10.16   使用线程局部存储        117
3.10.17   使用纤程        117
3.10.18   有选择地使用线程        118
第4章   同步        119
4.1   定义问题        119
4.1.1   情况一        120
4.1.2   情况二        120
4.1.3   情况三        121
4.2   关于同步        121
4.3   同步的细节        121
4.4   互锁命令        122
4.5   细说事件        123
4.6   细说多用户终端执行程序        124
4.7   细说信号量程序        126
4.8   安全同步        127
4.9   使用WaitForMultipleObjects        127
4.10   能报警的等待        128
4.11   可等待的计时器        128
4.12   临界区        128
4.13   主要示例        130
4.14   其他可等待的句柄        137
4.14.1   改变标志信息        137
4.14.2   控制平台句柄        137
4.15   直接解答        138
4.15.1   选择同步的方法        138
4.15.2   避免死锁        139
4.15.3   使用事件        140
4.15.4   使用多用户终端执行程序        140
4.15.5   使用临界区        140
4.15.6   使用信号量程序        141
4.15.7   等待多个对象        141
4.15.8   使用互锁的变量        141
4.15.9   了解MFC和同步        142
第5章   文件I/O        147
5.1   为什么异步I/O        148
5.2   回顾文件I/O        148
5.3   使用线程        151
5.4   重叠I/O        152
5.4.1   完成I/O        152
5.4.2   使用事件        153
5.4.3   使用ReadFileEx和WriteFileEx        153
5.4.4   EOF检测        153
5.5   I/O完成端口        154
5.6   应用程序的示例        154
5.7   完成端口示例        158
5.8   访问文件的另外方式        162
5.9   示例        162
5.10   直接解答        166
5.10.1   打开文件        166
5.10.2   同步读/写文件        166
5.10.3   检测EOF(同步)        166
5.10.4   复制文件句柄        167
5.10.5   关闭文件        167
5.10.6   使用异步I/O的方法        167
5.10.7   利用线程使用异步I/O        167
5.10.8   启动重叠I/O        169
5.10.9   结束异步I/O        170
5.10.10   检测EOF(异步)        170
5.10.11   使用ReadFileEx和Write
                FileEx        170
5.10.12   使用完成端口        171
5.10.13   存储器映像文件        171
第6章   进程间的通信        172
6.1   为什么重要        173
6.2   Windows 2000的IPC机制综述        174
6.3   简单的IPC        176
6.4   将DLL用于共享存储器        182
6.5   其他共享存储器技术        185
6.6   匿名管道        186
6.7   命名管道        189
6.7.1   使用管道        189
6.7.2   消息模式管道        189
6.7.3   其他管道命令        189
6.8   邮件通道        190
6.9   关于网络接口        198
6.9.1   网络接口        199
6.9.2   启动服务器程序        200
6.9.3   启动客户程序        201
6.9.4   Windows网络接口        201
6.9.5   更多的网络接口        202
6.9.6   关于跳棋程序        203
6.9.7   特殊考虑        217
6.9.8   改进        218
6.10   MFC网络接口        218
6.10.1   关于CSocket        219
6.10.2   使用有CSocket的档案文件        220
6.10.3   更进一步的CAsyncSocket        220
6.10.4   封锁命令        220
6.10.5   示例        221
6.10.6   基本架构        221
6.10.7   加入客户网络接口        234
6.10.8   其他考虑        235
6.10.9   网络接口的包装        236
6.11   关于RPC        236
6.11.1   RPC理论        236
6.11.2   实践中的RPC        237
6.11.3   一步一步地编写RPC        237
6.11.4   在IDL文件内        241
6.11.5   编写客户程序        242
6.11.6   编写服务器程序        242
6.11.7   实现连接        243
6.11.8   更多内容        243
6.12   Microsoft消息队列        243
6.13   直接解答        244
6.13.1   IPC方法的综述        244
6.13.2   使用 WM_COPYDATA        245
6.13.3   使用共享存储器的DLL        246
6.13.4   文件映像共享存储器        246
6.13.5   使用匿名管道        247
6.13.6   使用命名管道        247
6.13.7   用管道替代标准句柄        248
6.13.8   使用邮件通道        248
6.13.9   使用网络接口        248
6.13.10   使用RPC        249
6.13.11   了解何时舍弃或少用IPC方法        250
第7章   存储器管理        251
7.1   为什么存储器管理会带来麻烦        251
7.2   存储器分页        252
7.3   使用VirtualAlloc        252
7.4   实际上的VirtualAlloc        253
7.5   使用页面属性        255
7.6   使用堆栈        259
7.7   直接解答        261
7.7.1   何时使用VirtualAlloc        261
7.7.2   使用VirtualAlloc与VirtualFree        261
7.7.3   设置页面保护        262
7.7.4   读取页面保护        262
7.7.5   响应异常事件        262
7.7.6   创建新堆栈        263
7.7.7   查找默认堆栈        263
7.7.8   分配与释放堆栈数据        263
7.7.9   压缩堆栈        264
7.7.10   调试堆栈        264
7.7.11   堆栈性能的考虑        264
第8章   Windows 的安全        265
8.1   安全的目标        265
8.2   特权与授权        266
8.3   用NULL填充        267
8.4   SID        268
8.5   ACE和ACL        268
8.6   安全对象的类型        269
8.7   使用默认值        269
8.8   建立SD        270
8.9   令牌与人格化        271
8.10   建立专断的ACL        271
8.11   使用AccessCheck        275
8.12   专用安全性        275
8.13   特权        279
8.14   Kerberos        279
8.15   直接解答        280
8.15.1   了解对象的拥有者        280
8.15.2   将SID变换为名字        281
8.15.3   将名字变换为SID        281
8.15.4   创建描述符        281
8.15.5   在绝对与自相对描述符间转换        282
8.15.6   使用默认的安全性描述符        282
8.15.7   使用通用安全性描述符        282
8.15.8   使用特定的安全性描述符        283
8.15.9   使用专用安全性        283
第9章   注册表与登录        284
9.1   放弃INI文件        284
9.2   注册表:封闭的和个人的        285
9.3   注册表的奇异特性        287
9.3.1   RegEnumValue        287
9.3.2   RegDeleteKey        287
9.3.3   错误的返回值        288
9.3.4   键入的数据        288
9.3.5   MFC程序示例        288
9.4   那是注册表吗        299
9.5   注册表中有什么        299
9.6   建立REG文件        299
9.7   在文件类型内部        301
9.8   登录        302
9.9   事件资源        302
9.10   创建消息文件        303
9.11   系统消息        304
9.12   操作记录        305
9.13   直接解答        308
9.13.1   打开注册表主键        308
9.13.2   查找子键        308
9.13.3   查找键值        309
9.13.4   使用注册表替代INI文件        309
9.13.5   创建REG文件        310
9.13.6   创建INF文件        310
9.13.7   创建消息DLL        311
9.13.8   注册消息DLL        311
9.13.9   登录事件        311
9.13.10   将错误转换为消息        312
第10章   用ATL的命令解释程序技巧        313
10.1   扩展命令解释程序        313
10.2   基本的ATL        315
10.3   使用MFC代替ATL        319
10.3.1   逐步地建立MFC的ActiveX对象        320
10.3.2   图标句柄细节        321
10.4   比较ATL与MFC        325
10.5   图标托盘程序        325
10.6   关于智能指针        329
10.7   快捷键        329
10.7.1   创建快捷键        330
10.7.2   消除快捷键        331
10.8   MMC        334
10.8.1   ATL Wizard可实现的        335
10.8.2   Wizard不能实现的        335
10.8.3   增加代码        336
10.8.4   ATL MMC快捷按钮        337
10.9   直接解答        354
10.9.1   关于扩展命令解释程序        354
10.9.2   撤销快捷键        355
10.9.3   创建快捷键        355
10.9.4   编写图标托盘程序        355
10.9.5   其他命令解释程序的命令        356
10.9.6   关于MMC        356
10.9.7   编写MMC快捷按钮        357
第11章   Internet与网络编程        358
11.1   Internet快捷键        358
11.1.1   开始运行        359
11.1.2   使用CEditView        366
11.2   使用Internet资源管理器        366
11.2.1   自动操作        367
11.2.2   进一步控制        372
11.2.3   使用CHtmlView        373
11.2.4   资源的URL        375
11.2.5   HTML对话框        376
11.3   Web发送API        379
11.3.1   定制上载程序        381
11.3.2   其他容易的方法        385
11.3.3   ActiveX的连接        386
11.3.4   读取Web        386
11.4   MFC Internet的支持        391
11.5   活动目录服务概述        401
11.5.1   术语        401
11.5.2   使用ADSI        401
11.6   直接解答        402
11.6.1   运行Internet快捷键        402
11.6.2   Internet通信的方法        403
11.6.3   使用资源URL        403
11.6.4   在Internet Explorer内        404
11.6.5   使用Scripting对象模型        404
11.6.6   使用HTML对话框        405
11.6.7   使用MFC的Internet支持        405
第12章   控制台应用程序与服务程序        406
12.1   创建简单的控制台应用程序        406
12.1.1   一些内容        406
12.1.2   AVC 细节        424
12.1.3   学习控制台窗口        425
12.1.4   特殊的控制台命令        427
12.1.5   处理事件        429
12.1.6   创建有用的新的控制台        429
12.2   服务程序        433
12.2.1   安装服务程序        434
12.2.2   调试服务程序        440
12.2.3   其他服务程序的考虑        440
12.3   面向对象的服务程序        441
12.4   直接解答        447
12.4.1   启动控制台程序        447
12.4.2   使用控制台程序的MFC        447
12.4.3   访问控制台的方法        447
12.4.4   创建GUI程序的主控制台        448
12.4.5   创建和使用辅助控制台        448
12.4.6   处理控制台事件        448
12.4.7   查找控制台的窗口句柄        449
12.4.8   在服务程序内        449
12.4.9   访问服务程序        450
12.4.10   C++服务的基类        450
12.4.11   调试服务程序        450
附录A   超越新领域        452
附录B  Windows 2000:编程的冒险
       旅行        456
附录C   随书光盘的内容        458
附件: 您所在的用户组无法下载或查看附件
认识,学习,求知,巩固,完善,运用,操作.      ||----责任...||

TOP

‹‹ 上一帖:Windows 2000 部署与桌面管理   |   下一帖:中文WINDOWS_2000_PROFERSIONAL_24学时教程 ››
发新话题