Windows系统编程

Windows系统编程 pdf epub mobi txt 电子书 下载 2026

出版者:机械工业出版社
作者:Johnson M. Hart
出品人:
页数:400
译者:戴锋
出版时间:2010年11月
价格:65.00元
装帧:平装
isbn号码:9787111316688
丛书系列:
图书标签:
  • Windows编程
  • Windows
  • 编程
  • 程序设计
  • C++
  • 计算机科学
  • 计算机技术
  • 计算机
  • Windows
  • 系统编程
  • API
  • 内核
  • 驱动程序
  • Win32
  • COM
  • C++
  • 调试
  • 安全
  • 架构
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

本书是介绍使用Microsoft Windows应用程序编程接口进行应用程序开发的专著,专注于文件系统、进程和线程管理、进程间通信、网络编程以及同步等核心系统服务。本书的示例都来自现实场景,其中有许多是基于作者在实践中所开发的真实应用程序。本书的目的在于展示如何高效地在现实中使用Windows API特性来开发高质量、高性能的应用程序。

本书适合以下读者阅读:任何有C或C++编程知识且想快速学习Windows应用程序开发的开发人员、计算机科学专业学习系统编程或应用程序开发课程的高年级学生以及UNIX/Linux程序员。

作者简介

Johnson(John)M.Hart是一位顾问、专攻Microsoft Windows和.NET应用程序开发、开放系统计算、技术培训和写作以及软件工程等领域。作为软件工程师、经理、工程主管以及Cilk Arts公司、Sierra Atlantic、HP和Apollo Computer的高级技术顾问,他有超过25年的经验。John还开发并提供Windows、UNIX和Linux方面的专业培训课程,而且曾在肯塔基大学做过9年的计算机科学教授。他是技术、贸易和学术文章以及包括《Windows系统编程》4个版本在内的许多书籍的作者。

目录信息

译者序
前言
作者简介
第1章Windows初步1
1.1操作系统必备功能1
1.2Windows的演化2
1.3Windows版本2
1.3.1过时的Windows先前版本2
1.3.2Windows NT5和NT63
1.3.3处理器支持3
1.4Windows的市场角色3
1.5Windows、标准以及开放系统4
1.6Windows准则5
1.732位和64位源代码可移植性6
1.8标准C库:何时用它来处理文件7
1.9使用本书所需的条件7
1.9.1为什么使用C而不是C++7
1.9.2使用示例7
1.10示例:一个简单的顺序文件复制程序8
1.10.1使用C库的文件复制9
1.10.2使用Windows的文件复制11
1.10.3使用Windows便利函数的
文件复制12
1.11小结13
1.11.1前瞻14
1.11.2附加阅读14
1.12习题15
第2章使用Windows文件系统和
字符I/O16
2.1Windows文件系统16
2.2文件命名17
2.3文件的打开、读取、写入以及关闭17
2.3.1文件的创建和打开17
2.3.2关闭文件19
2.3.3读文件20
2.3.4写文件21
2.4Unicode和通用字符21
2.4.1另一种通用字符串处理函数22
2.4.2通用Main函数23
2.4.3函数定义23
2.5Unicode策略23
2.6示例:错误处理23
2.7标准设备25
2.8示例:将多个文件复制到标准输出26
2.9示例:简单的文件加密27
2.10文件和目录管理29
2.10.1文件管理29
2.10.2目录管理31
2.11控制台I/O32
2.12示例:打印和提示33
2.13示例:打印当前目录35
2.14小结36
2.14.1前瞻36
2.14.2附加阅读36
2.15习题36
第3章高级文件、目录处理与注册表38
3.164位文件系统38
3.2文件指针38
3.2.164位算术39
3.2.2使用重叠结构来指定文件位置40
3.3获得文件尺寸41
3.4示例:随机记录更新41
3.5文件属性和目录处理45
3.5.1路径名46
3.5.2其他用于获得文件和目录属性的方法46
3.5.3临时文件名47
3.6示例:列出文件属性47
3.7示例:设置文件时间50
3.8文件处理策略51
3.9文件锁52
3.9.1释放文件锁54
3.9.2锁逻辑的后果54
3.10注册表55
3.11注册表管理56
3.11.1项管理57
3.11.2值和数据管理58
3.12示例:列出注册表项及其内容59
3.13小结62
3.13.1前瞻62
3.13.2附加阅读62
3.14习题62
第4章异常处理64
4.1异常及其处理程序64
4.1.1Try和Except块64
4.1.2过滤表达式及其值66
4.1.3异常代码67
4.1.4小结:异常处理顺序68
4.2浮点异常69
4.3错误和异常70
4.4示例:以异常方式处理错误71
4.5终止处理程序72
4.5.1离开try块72
4.5.2非正常终止73
4.5.3执行并离开终止处理程序73
4.5.4组合finally和except块73
4.5.5全局和局部解开74
4.5.6终止处理程序:进程和线程
终止74
4.5.7SEH和C++异常处理74
4.6示例:使用终止处理程序来改进程序质量74
4.7示例:使用过滤函数77
4.8控制台控制处理程序79
4.9示例:一个控制台控制处理程序80
4.10向量化异常处理82
4.11小结82
4.12习题83
第5章内存管理、内存映射文件和DLL84
5.1Windows内存管理架构84
5.2堆86
5.3管理堆内存88
5.3.1HeapAlloc88
5.3.2HeapFree89
5.3.3HeapReAlloc89
5.3.4HeapSize89
5.3.5更多关于序列化与异常标志的信息90
5.3.6其他堆函数90
5.3.7小结:堆管理91
5.4示例:使用二叉搜索树对文件进行排序91
5.5内存映射文件95
5.5.1文件映射对象96
5.5.2将对象映射到进程地址空间97
5.5.3文件映射的限制99
5.5.4小结:文件映射100
5.6示例:使用映射文件进行顺序文件处理100
5.7示例:对内存映射文件排序102
5.8基指针104
5.9示例:使用基指针104
5.10动态链接库108
5.10.1静态库和动态库108
5.10.2隐式链接109
5.10.3显式链接111
5.11示例:显式链接文件转换函数112
5.12DLL进入点113
5.13DLL版本管理114
5.14小结115
5.14.1前瞻115
5.14.2附加阅读115
5.15习题115
第6章进程管理117
6.1Windows进程和线程117
6.2进程创建118
6.2.1指定可执行映像和命令行120
6.2.2可继承句柄121
6.3进程标识122
6.4复制句柄123
6.5进程的退出与终止124
6.6等待进程终止125
6.7环境块和字符串125
6.8示例:并行模式搜索126
6.9多处理器环境中的进程129
6.10进程执行时间130
6.11示例:进程执行时间130
6.12生成控制台控制事件131
6.13示例:简单的作业管理132
6.13.1创建一个后台作业132
6.13.2获取作业号135
6.13.3列出背景作业136
6.13.4在作业清单文件中查找作业137
6.13.5作业对象138
6.14示例:使用作业对象139
6.15小结142
6.16习题142
第7章线程和调度144
7.1线程概述144
7.2线程基础145
7.3线程管理146
7.3.1CreateThread146
7.3.2ExitThread147
7.3.3GetExitCodeThread147
7.3.4线程标识147
7.3.5更多线程管理函数147
7.3.6挂起以及恢复线程148
7.3.7等待线程终止148
7.4在线程中使用C库148
7.5示例:多线程的模式搜索149
7.6性能影响152
7.7老板/工人和其他线程模型152
7.8示例:合并排序——利用多处理器152
7.9程序并行性简介157
7.10线程本地存储158
7.11进程和线程优先级以及调度159
7.12线程状态160
7.13陷阱和常见错误162
7.14计时等待163
7.15纤程163
7.16小结165
7.16.1前瞻165
7.16.2附加阅读165
7.17习题165
第8章线程同步167
8.1线程同步之需167
8.1.1临界代码区域168
8.1.2临界代码区域问题的有瑕疵的解决方案168
8.1.3volatile存储169
8.1.4内存架构和内存屏障169
8.1.5互锁函数:介绍171
8.1.6局部和全局存储171
8.1.7小结:线程安全的代码172
8.2线程同步对象173
8.3CRITICAL_SECTION对象173
8.4用于保护共享变量的CRITICAL_SECTION174
8.5示例:一个简单的生产者/消费者系统176
8.6互斥量180
8.6.1被放弃的互斥量181
8.6.2互斥量、CRITICAL_SECTION以及死锁181
8.6.3复习:互斥量与CRITICAL_SECTION对比183
8.6.4堆锁183
8.7信号量183
8.7.1使用信号量184
8.7.2信号量的限制184
8.8事件185
8.9示例:一个生产者/消费者系统187
8.9.1复习:Windows同步对象189
8.9.2消息和对象等待190
8.10更多互斥量和CRITICAL_SECTION的指导原则190
8.11更多互锁函数191
8.12内存管理性能的考虑192
8.13小结192
8.13.1前瞻192
8.13.2附加阅读192
8.14 习题192
第9章 锁、性能以及NT6增强194
9.1 同步性能影响194
9.2 用于性能试验的模型程序197
9.3 使用CS自旋数来调整多处理器性能198
9.4 NT6轻量级读/写锁199
9.5 减少线程竞争的线程池200
9.6 I/O完成端口202
9.7 NT6线程池203
9.7.1 CreateThreadpoolWork 203
9.7.2 SubmitThreadpoolWork 204
9.7.3 WaitForThreadpoolWork-Callbacks 204
9.7.4 CloseThreadpoolWork 204
9.7.5 回调函数204
9.7.6 将回调提交给线程池207
9.7.7 线程池环境207
9.7.8 进程线程池207
9.7.9 其他线程池回调类型208
9.8 小结:锁性能208
9.9 再论并行性208
9.9.1 更好的基础以及扩展中的并行程序技术209
9.9.2 并行编程的可选方法209
9.9.3 并行性框架209
9.9.4 不要忘了挑战的存在210
9.10 处理器亲和性210
9.10.1 系统、进程与线程亲和性掩码211
9.10.2 查找处理器数量212
9.11 性能指导原则和陷阱212
9.12 小结213
9.12.1 前瞻213
9.12.2 附加阅读213
9.13 习题213
第10章 高级线程同步215
10.1 条件变量模型和安全性能215
10.1.1 一起使用事件和互斥量215
10.1.2 条件变量模型216
10.1.3 条件变量模型的使用218
10.2 使用SignalObjectAndWait219
10.3 示例:阀值屏障对象220
10.4 队列对象223
10.5 示例:在多阶段管线中使用队列226
10.6 Windows NT6条件变量233
10.7 异步过程调用236
10.8 异步过程调用的排队236
10.9 可报警的等待状态237
10.10 安全的线程取消239
10.11 为了应用程序的可移植而使用Pthreads239
10.12 线程堆栈和线程数239
10.13 关于设计、调试和测试的提示240
10.14 Windows API之外241
10.15 小结241
10.15.1 前瞻242
10.15.2 附加阅读242
10.16 习题242
第11章 进程间通信244
11.1 匿名管道244
11.2 示例:使用匿名管道进行I/O重定向245
11.3 命名管道247
11.3.1 使用命名管道248
11.3.2 创建命名管道248
11.3.3 命名管道客户连接249
11.3.4 命名管道状态函数250
11.3.5 命名管道连接函数250
11.3.6 客户和服务器的命名管道连接250
11.4 命名管道事务函数251
11.5 示例:客户/服务器命令行处理程序253
11.6 关于客户/服务器命令行处理程序的注释258
11.7 邮槽259
11.7.1 使用邮槽260
11.7.2 创建和打开邮槽260
11.8 管道和邮槽的创建、连接和命名261
11.9 示例:客户可定位的服务器262
11.10 小结264
11.11 习题264
第12章 使用Windows套接字进行网络编程265
12.1 Windows套接字265
12.1.1 Winsock初始化266
12.1.2 创建套接字266
12.2 套接字服务器函数267
12.2.1 绑定套接字267
12.2.2 将绑定的套接字置于侦听状态268
12.2.3 接受客户连接268
12.2.4 断开以及关闭套接字268
12.2.5 示例:准备并接受客户连接269
12.3 套接字客户函数270
12.3.1 连接服务器270
12.3.2 示例:客户连接服务器270
12.3.3 发送和接收数据270
12.4 命名管道和套接字之对比271
12.4.1 命名管道与套接字服务器之比较271
12.4.2 命名管道与套接字客户之比较271
12.5 示例:套接字消息接收函数271
12.6 示例:基于套接字的客户272
12.7 示例:基于套接字的、带有新特性的服务器274
12.7.1 主程序275
12.7.2 服务器线程278
12.7.3 运行套接字服务器279
12.7.4 安全注释280
12.8 进程内服务器280
12.9 面向行的消息、DLL进入点以及TLS282
12.10 示例:线程安全的套接字消息DLL283
12.11 示例:另一种线程安全的DLL策略286
12.12 数据报289
12.12.1 数据报广播289
12.12.2 使用数据报进行远程过程调用289
12.13 Berkeley套接字和Windows套接字的比较290
12.14 Windows套接字使用重叠I/O290
12.15 Windows套接字的额外特性290
12.16 小结290
12.16.1 前瞻290
12.16.2 附加阅读291
12.17 习题291
第13章 Windows服务293
13.1 概述:编写Windows服务293
13.2 main()函数294
13.3 ServiceMain()函数294
13.3.1 注册服务控制处理程序295
13.3.2 设置服务状态295
13.3.3 SERVICE_STATUS结构296
13.3.4 服务特定的代码297
13.4 服务控制处理程序297
13.5 事件记录298
13.6 示例:服务“包装器”298
13.7 管理Windows服务302
13.7.1 打开SCM303
13.7.2 创建和删除服务303
13.7.3 启动服务304
13.7.4 控制服务304
13.7.5 查询服务状态305
13.7.6 小结:服务操作和管理305
13.8 示例:服务控制Shell305
13.9 与服务共享内核对象309
13.10 调试服务时的注意事项309
13.11 小结310
13.11.1 前瞻310
13.11.2 附加阅读310
13.12 习题310
第14章 异步输入/输出与完成端口311
14.1 Windows异步I/O概述311
14.2 重叠I/O312
14.2.1 重叠I/O的后果312
14.2.2 重叠结构313
14.2.3 重叠I/O状态313
14.2.4 取消重叠I/O操作314
14.3 示例:在一个文件句柄之上同步314
14.4 示例:使用重叠I/O和多缓冲区进行文件转换315
14.5 使用完成例程的扩展I/O318
14.5.1 ReadFileEx、WriteFileEx和完成例程318
14.5.2 可报警的等待函数319
14.5.3 完成例程的执行和可报警等待的返回320
14.6 示例:使用扩展I/O的文件转换321
14.7 使用线程的异步I/O324
14.8 可等待定时器324
14.9 示例:使用可等待定时器325
14.9.1 可等待定时器示例的注释327
14.9.2 线程池定时器327
14.10 I/O完成端口327
14.10.1 管理I/O完成端口328
14.10.2 等待I/O完成端口328
14.10.3 邮发给I/O完成端口329
14.10.4 I/O完成端口的替代329
14.11 示例:使用I/O完成端口的服务器329
14.12 小结335
14.13 习题335
第15章 Windows对象的安全337
15.1 安全属性337
15.2 安全性概述:安全描述符338
15.2.1 访问控制列表338
15.2.2 使用Windows对象安全性339
15.2.3 对象权限和对象访问339
15.2.4 安全描述符初始化339
15.3 安全描述符控制标志339
15.4 安全标识符340
15.5 管理ACL341
15.6 示例:NTFS文件的UNIX风格的权限342
15.7 示例:初始化安全属性345
15.8 安全描述符的读与更改347
15.9 示例:读取文件权限349
15.10 示例:更改文件权限350
15.11 给内核和通信对象施加安全350
15.11.1 给命名管道施加安全350
15.11.2 内核与私有对象的安全性351
15.11.3 ACE掩码值351
15.12 示例:给进程及其线程施加安全352
15.13 其他安全特性的概述352
15.13.1 移除ACE352
15.13.2 绝对的和自相关的安全描述符352
15.13.3 系统ACL352
15.13.4 访问令牌信息353
15.13.5 SID管理353
15.14 小结353
15.14.1 前瞻353
15.14.2 附加阅读353
15.15 习题353
附录A 使用示例程序355
附录B 源代码可移植性:Windows、UNIX和Linux357
附录C 性能结果370
参考文献379
· · · · · · (收起)

读后感

评分

不是windows程序员,纯粹为了拓宽眼界而买这本书,匆匆浏览完了。书的内容应该还可以,但对我来说,看翻译版还不如看英文原版。看英文版虽然慢了点,但是至少我脑子还是跟得上作者的思路的,看中文版通常都是迷迷糊糊的。这次经历更坚定了以后尽量不读翻译版的书,尤其是有多个...  

评分

不是windows程序员,纯粹为了拓宽眼界而买这本书,匆匆浏览完了。书的内容应该还可以,但对我来说,看翻译版还不如看英文原版。看英文版虽然慢了点,但是至少我脑子还是跟得上作者的思路的,看中文版通常都是迷迷糊糊的。这次经历更坚定了以后尽量不读翻译版的书,尤其是有多个...  

评分

不是windows程序员,纯粹为了拓宽眼界而买这本书,匆匆浏览完了。书的内容应该还可以,但对我来说,看翻译版还不如看英文原版。看英文版虽然慢了点,但是至少我脑子还是跟得上作者的思路的,看中文版通常都是迷迷糊糊的。这次经历更坚定了以后尽量不读翻译版的书,尤其是有多个...  

评分

评分

不是windows程序员,纯粹为了拓宽眼界而买这本书,匆匆浏览完了。书的内容应该还可以,但对我来说,看翻译版还不如看英文原版。看英文版虽然慢了点,但是至少我脑子还是跟得上作者的思路的,看中文版通常都是迷迷糊糊的。这次经历更坚定了以后尽量不读翻译版的书,尤其是有多个...  

用户评价

评分

坦白说,这本书的排版和插图设计确实有些传统,初看之下,厚厚的文字和略显朴素的流程图可能会让习惯了现代风格电子书的读者望而却步。但这恰恰是它“老派”魅力的体现——内容为王。我发现,当我在调试一个棘手的系统级错误时,翻开这本书,找到对应章节,那种详尽的、不加修饰的描述,远比那些图文并茂但内容单薄的资料来得可靠。尤其是关于系统调用栈的跟踪分析,作者提供了一套非常系统化的调试思路,结合WinDbg的使用技巧,让人感觉自己手中握着一把解开复杂系统问题的瑞士军刀。书中对各种异常处理机制的论述,从SEH到结构化异常处理的演变,简直是教科书级别的梳理。唯一希望改进的是,如果能在关键的系统数据结构定义处增加一些现代化的UML图示,可能会更利于快速理解,但瑕不掩瑜,它的核心价值在于其无与伦比的深度和实践指导意义,是工具箱里必须常备的一本“大部头”。

评分

这本书的讲解方式简直是为初学者量身定做的,我之前对操作系统底层的那些概念总是感到晦涩难懂,像隔了一层雾。但读了这本书,特别是关于进程间通信和内存管理的章节,那种豁然开朗的感觉太棒了。作者没有一上来就抛出复杂的API调用,而是先用生活化的比喻把抽象的概念讲透彻,比如把线程比作工厂里的工人,把消息队列比作信箱。这种循序渐进的教学方法,让我对Windows内核是如何运作的有了直观的认识。而且书中的代码示例非常贴合实际应用,每一个例子后面都有详尽的注释和分析,让你知道每一行代码背后的含义,而不是死记硬背。我尤其欣赏作者在讲解同步机制时,那种对死锁和竞态条件的细致剖析,让我深刻理解了并发编程的陷阱。读完后,我感觉自己不再是那个只会调用`CreateProcess`的“调包侠”,而是真正开始理解程序在操作系统层面是如何调度和执行的了。对于任何想从应用层开发迈向系统级理解的工程师来说,这绝对是一本不可多得的入门利器,它构建了一个坚实的基础,让你有信心去探索更深层次的系统细节。

评分

这本书的深度和广度都超出了我的预期,它不像市面上很多“速成”书籍那样只停留在表层功能的介绍,而是真正深入到了Windows API的实现原理层面。我特别关注了关于I/O完成端口(IOCP)的部分,那块内容写得极其专业和透彻。作者对异步I/O模型在处理高并发网络请求时的性能优势进行了细致的数学模型分析,而非仅仅是代码展示。对我而言,最宝贵的是作者对Windows内部数据结构和对象管理机制的揭示,比如内核对象的引用计数是如何精确控制生命周期的,这在调试内存泄漏时简直是救命稻草。阅读过程中,我感觉自己像是拿到了一份微软内部的参考手册,很多我在MSDN文档中找不到的上下文和设计哲学,在这里得到了完美的阐释。虽然有些地方的理论推导略显烧脑,需要反复研读和对照官方文档辅助理解,但正是这种挑战性,才保证了这本书的含金量。对于有一定C/C++基础,渴望成为“架构师”而不是“码农”的资深开发者,这本书提供了从“如何做”到“为什么这么做”的完整认知飞跃。

评分

我之前尝试阅读过几本关于Windows内核编程的书籍,但它们要么侧重于驱动开发,要么过于偏向特定版本的Windows特性。这本书的厉害之处在于它提供了一个跨越多个Windows版本的、相对稳定的API编程范式。它清晰地区分了哪些是遗留接口,哪些是现代推荐的做法,并解释了这种演进背后的原因。比如,它对线程模型从Fiber到Thread再到Thread Pool的演变进行了历史性的回顾,这让我能更好地理解现有框架的选择。作者在讲解线程同步原语时,花费了大量篇幅对比了Mutex、Semaphore、Event和Condition Variable的适用场景和性能开销,这种对比分析极具工程价值。我发现,自己过去随意使用的同步工具,在这本书的指导下,得到了更精细化的选择。这本书没有过多关注界面编程或者MFC这类上层应用框架,而是坚实地扎根于操作系统提供的核心服务,这使得它的知识体系具有很强的生命力和普适性,是构建高性能、高可靠性Windows服务的基石。

评分

这本书带给我的最大收获是一种“系统思维”的建立。它不仅仅是告诉你“怎么做”一个功能,更重要的是让你理解“为什么”系统会以这种方式提供服务。例如,在深入探讨虚拟内存和文件映射(MapViewOfFile)时,作者详细解释了操作系统如何通过页表将逻辑地址映射到物理地址,以及TLB(转译后备缓冲区)对性能的巨大影响。这些底层机制的揭示,直接影响了我后续在设计大数据处理应用时对内存布局和I/O模式的选择,我开始有意识地去减少缺页中断的发生频率。这本书的语言风格非常严谨,甚至带有一丝学术的严谨性,但所有的理论推导都紧密结合着Windows API的实际调用,形成了一个完整的知识闭环。对于那些希望将自己的编程能力提升到能与操作系统“对话”层级的开发者来说,这本书是通往那一境界的必经之路,它教会你如何像操作系统本身一样去思考资源的分配和调度。

评分

深度不够 很肤浅!

评分

深度不够 很肤浅!

评分

深度不够 很肤浅!

评分

深度不够 很肤浅!

评分

深度不够 很肤浅!

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.quotespace.org All Rights Reserved. 小美书屋 版权所有