Windows核心编程(第5版)

Windows核心编程(第5版) pdf epub mobi txt 电子书 下载 2026

出版者:清华大学出版社
作者:Jeffrey Richter
出品人:
页数:770
译者:葛子昂
出版时间:2008-9
价格:99.00元
装帧:16开
isbn号码:9787302184003
丛书系列:
图书标签:
  • Windows编程
  • Windows
  • 编程
  • 操作系统
  • 计算机
  • C++
  • 程序设计
  • Programming
  • Windows
  • 核心
  • 编程
  • 第5版
  • 操作系统
  • 开发
  • API
  • 微软
  • 程序设计
  • 底层
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

这是一本经典的Windows核心编程指南,从第1版到第5版,引领着数十万程序员走入Windows开发阵营,培养了大批精英。.

作为Windows开发人员的必备参考,本书是为打算理解Windows的C和C++程序员精心设计的。第5版全面覆盖Windows XP,Windows Vista和Windows Server 2008中的170个新增函数和Windows特性。书中还讲解了Windows系统如何使用这些特性,我们开发的应用程序又如何充分使用这些特性,如何自行创建新的特性。...

作者简介

Jeffrey Richter是一位在全球享有盛誉的技术作家,尤其在Windows/.NET领域有着杰出的贡献。他的第一本Windows著作Windows 3: A Developer's Guide大获好评,从而声名远扬。之后,他又推出了经典著作《Windows 高级编程指南》和《Windows核心编程》。如今这两本书早已成为Windows程序设计领域的颠峰之作,培育了几代软件开发设计人员。他的每一本新作问世,我们都有理由相信这是一本巨著,我们想要的一切尽在其中。Jeffery 是Wintellect公司的创始人之一,也是MSDN杂志.NET专栏的特邀编辑。现在他正领导开发该公司的.NET程序设计课程,向大众推广.NET技术。因为他自1999年开始就参与了微软.NET框架开发组的咨询工作,与这些一线人员一起经历了.NET的孕育与诞生,所以他对.NET思想的领悟、对.NET的细节熟稔,是其他任何作家难以企及的。他是.NET著作领域中当之无愧的一面旗帜。

Christophe Nasarre是Business Objects的软件架构师和开发部门领导,该公司致力于帮助其他企业更好地专注于其主营业务,通过商业智能方案来提升决策能力和业绩。他为Addison-Wesley,APress和Microsoft Press出版的许多图书担任过技术审校,此外还是MSDN Magazine的撰稿人。

目录信息

第1部分 必备知识
第1章 错误处理
1.1 定义自己的错误代码
1.2 ErrorShow示例程序
第2章 字符和字符串处理
2.1 字符编码
2.2 ANSI字符和Unicode字符与字符串数据类型
2.3 Windows中的Unicode函数和ANSI函数
2.4 C运行库中的Unicode函数和ANSI函数
2.5 C运行库中的安全字符串函数
2.5.1 初识新的安全字符串函数
2.5.2 在处理字符串时如何获得更多控制
2.5.3 Windows字符串函数
2.6 为何要用Unicode
2.7 推荐的字符和字符串处理方式
2.8 Unicode与ANSI字符串转换
2.8.1 导出ANSI和Unicode DLL函数
2.8.2 判断文本是ANSI还是Unicode
第3章 内核对象
3.1 何为内核对象
3.1.1 使用计数
3.1.2 内核对象的安全性
3.2 进程内核对象句柄表
3.2.1 创建一个内核对象
3.2.2 关闭内核对象
3.3 跨进程边界共享内核对象
3.3.1 使用对象句柄继承
3.3.2 改变句柄的标志
3.3.3 为对象命名
3.3.4 终端服务命名空间
3.3.5 专有命名空间
3.3.5 复制对象句柄
第Ⅱ部分 工作机制
第4章 进程
4.1 编写第一个Windows应用程序
4.1.1 进程实例句柄
4.1.2 进程前一个实例的句柄
4.1.3 进程的命令行
4.1.4 进程的环境变量
4.1.5 进程的关联性
4.1.6 进程的错误模式
4.1.7 进程当前所在的驱动器和目录
4.1.8 进程的当前目录
4.1.9 系统版本
4.2 CreateProcess函数
4.2.1 pszApplicationName和pszCommandLine参数
4.2.2 psaProcess,psaThread和bInheritHandles参数
4.2.3 fdwCreate参数
4.2.4 pvEnvironment参数
4.2.5 pszCurDir参数
4.2.6 psiStartInfo参数
4.2.7 ppiProcInfo参数
4.3 终止进程
4.3.1 主线程的入口点函数返回
4.3.2 ExitProcess函数
4.3.3 TerminateProcess函数
4.3.4 当进程中的所有线程终止时
4.3.5 当进程终止运行时
4.4 子进程
4.5 管理员以标准用户权限运行时
4.5.1 自动提升进程的权限
4.5.2 手动提升进程的权限
4.5.3 何为当前权限上下文
4.5.4 枚举系统中正在运行的进程
4.5.5 Process Information示例程序
第5章 作业
5.1 对作业中的进程施加限制
5.2 将进程放入作业中
5.3 终止作业中的所有线程查询作业统计信息
5.4 作业通知
5.6 Job Lab示例程序
第6章 线程基础
6.1 何时创建线程
6.2 何时不应该创建线程
6.3 编写第一个线程函数
6.4 CreateThread函数
6.4.1 psa参数
6.4.2 cbStackSize参数
6.4.3 pfnStartAddr和pvParam参数
6.4.4 dwCreateFlags
6.4.5 pdwThreadID7
6.5 终止运行线程
6.5.1 线程函数返回
6.5.2 ExitThread函数
6.5.3 TerminateThread函数
6.5.4 进程终止运行时
6.5.5 线程终止运行时
6.6 线程内幕
6.7 C/C++运行库注意事项
6.7.1 用_beginthreadex而不要用CreateThread创建线程
6.7.2 绝对不应该调用的C/C++运行库函数
6.8 了解自己的身份
6.8.1 将伪句柄转换为真正的句柄
第7章 线程调度、优先级和关联性
7.1 线程的挂起和恢复
7.2 进程的挂起和恢复
7.3 睡眠
7.4 切换到另一个线程
7.5 在超线程CPU上切换到另一个线程
7.6 线程的执行时间
7.7 在实际上下文中谈CONTEXT结构
7.8 线程优先级
7.9 从抽象角度看优先级
7.10 优先级编程
7.10.1 动态提升线程优先级
7.10.2 为前台进程微调调度程序
7.10.3 调度I/O请求优先级
7.10.4 Scheduling Lab 示例程序
7.11 关联性
第8章 用户模式下的线程同步
8.1 原子访问:Interlocked系列函数
8.2 高速缓存行
8.3 高级线程同步需要避免使用的一种方法
8.4 关键段
8.4.1 关键段:细节
8.4.2 关键段和旋转锁
8.4.3 关键段和错误处理
8.5 Slim读/写锁
8.6 条件变量
8.6.1 Queue示例程序
8.6.2 在停止线程时的死锁问题
8.6.3 一些有用的窍门和技巧
第9章 用内核对象进行线程同步
9.1 等待函数
9.2 等待成功所引起的副作用
9.3 事件内核对象
9.4 可等待的计时器内核对象
9.4.1 让可等待的计时器添加APC调用
9.4.2 计时器的剩余问题
9.5 信号量内核对象
9.6 互斥量内核对象
9.6.1 遗弃问题
9.6.2 互斥量与关键段的比较
9.6.3 Queue示例程序
9.7 线程同步对象速查表
9.8 其他的线程同步函数
9.8.1 异步设备I/O
9.8.2 WaitForInputIdle函数
9.8.3 MsgWaitForMultipleObjects(Ex)函数
9.8.4 WaitForDebugEvent函数
9.8.5 SignalObjectAndWait函数
9.8.6 使用等待链遍历API来检测死锁
第10章 同步设备I/O与异步设备I/O
10.1 打开和关闭设备细看CreateFile函数
10.2 使用文件设备
10.2.1 取得文件的大小
10.2.2 设置文件指针的位置
10.2.3 设置文件尾
10.3 执行同步设备I/O
10.3.1 将数据刷新至设备
10.3.2 同步I/O的取消
10.4 异步设备I/O基础
10.4.1 OVERLAPPED结构
10.4.2 异步设备I/O的注意事项
10.4.3 取消队列中的设备I/O请求
10.5 接收I/O请求完成通知
10.5.1 触发设备内核对象
10.5.2 触发事件内核对象
10.5.3 可提醒I/O
10.5.4 I/O完成端口
10.5.5 模拟已完成的I/O请求
第11章 Windows线程池
11.1 情形1:以异步方式调用函数
11.1.1 显式地控制工作项
11.1.2 Batch示例程序
11.2 情形2:每隔一段时间调用一个函数
11.3 情形3:在内核对象触发时调用一个函数
11.4 情形4:在异步I/O请求完成时调用一个函数
11.5 回调函数的终止操作
11.5.1 对线程池进行定制
11.5.2 得体地销毁线程池:清理组
第12章 纤程
第Ⅲ部分 内存管理
第13章 Windows内存体系结构
13.1 进程的虚拟地址空间
13.2 虚拟地址空间的分区
13.2.1 空指针赋值分区
13.2.2 用户模式分区
13.3 地址空间中的区域
13.4 给区域调拨物理存储器
13.5 物理存储器和页交换文件
13.6 页面保护属性
13.6.1 写时复制
13.6.2 一些特殊的访问保护属性标志
13.7 实例分析
13.8 数据对齐的重要性
第14章 探索虚拟内存
14.1 系统信息
14.2 虚拟内存状态
14.3 NUMA机器中的内存管理
14.4 确定地址空间的状态
14.4.1 VMQuery函数
14.4.2 示例程序:虚拟内存映射
第15章 在应用程序中使用虚拟内存
15.1 预订地址空间区域
15.2 给区域调拨物理存储器
15.3 同时预订和调拨物理存储器
15.4 何时调拨物理存储器
15.5 撤销调拨物理存储器及释放区
15.5.1 何时撤销调拨物理存储器
15.5.2 虚拟内存分配示例程序
15.6 改变保护属性
15.7 重置物理存储器的内容
15.8 地址窗口扩展
第16章 线程栈
16.1 C/C++运行库的栈检查函数
16.2 Summation示例程序
第17章 内存映射文件
17.1 映射到内存的可执行文件和DLL
17.1.1 同一个可执行文件或DLL的多个实例不会共享静态数据
17.1.2 在同一个可执行文件或DLL的多个实例间共享静态数据
17.1.3 Application Instances示例程序
17.2 映射到内存的数据文件
17.2.1 方法1:一个文件,一块缓存
17.2.2 方法2:两个文件,一块缓存
17.2.3 方法3:一个文件,两块缓存
17.2.4 方法4:一个文件,零个缓存
17.3 使用内存映射文件
17.3.1 第1步:创建或打开文件内核对象
17.3.2 第2步:创建文件映射内核对象
17.3.3 第3步:将文件的数据映射到进程的地址空间
17.3.4 第4步:从进程的地址空间撤销对文件数据的映射
17.3.5 第5步和第6步:关闭文件映射对象和文件对象
17.6 File Reverse示例程序
17.7 用内存映射文件来处理大文件
17.8 内存映射文件和一致性
17.9 给内存映射文件指定基地址
17.10 内存映射文件的实现细节
第18章 堆
18.1 进程的默认堆
18.2 为什么要创建额外的堆
18.2.1 对组件进行保护
18.2.2 更有效的内存管理
18.2.3 使内存访问局部化
18.2.4 避免线程同步的开销
18.2.5 快速释放
18.3 如何创建额外的堆
18.3.1 从堆中分配内存块
18.3.2 调整内存块的大小
18.3.3 获得内存块的大小
18.3.4 释放内存块
18.3.5 销毁堆
18.3.6 在C++中使用堆
18.4 其他堆函数
第Ⅳ部分 动态链接库
第19章 DLL基础
19.1 DLL和进程的地址空间
19.2 纵观全局
19.2.1 构建DLL模块
19.2.2 构建可执行模块
19.2.3 运行可执行模块
第20章 DLL高级技术
20.1 DLL模块的显式载入和符号链接
20.1.1 显式地载入DLL模块
20.1.2 显式地卸载DLL模块
20.1.3 显式地链接到导出符号
20.2 DLL的入口点函数
20.2.1 DLL_PROCESS_ATTACH通知
20.2.2 DLL_PROCESS_DETACH通知
20.2.3 DLL_THREAD_ATTACH通知
20.2.4 DLL_THREAD_DETACH通知
20.2.5 DllMain的序列化调用
20.2.6 DllMain和C/C++运行库
20.3 延迟载入DLL
20.4 函数转发器
20.5 已知的DLL
20.6 DLL重定向
20.7 模块的基地址重定位
20.8 模块的绑定
第21章 线程局部存储区
21.1 动态TLS
21.2 静态TLS0
第22章 DLL注入和API拦截
22.1 DLL注入的一个例子
22.2 使用注册表来注入DLL
22.3 使用Windows挂钩来注入DLL
22.4 使用远程线程来注入DLL
22.4.1 Inject Library示例程序
22.4.2 Image Walk DLL
22.5 使用木马DLL来注入DLL
22.6 把DLL作为调试器来注入
22.7 使用CreateProcess来注入代码
22.8 API拦截的一个例子9
22.8.1 通过覆盖代码来拦截API0
22.8.2 通过修改模块的导入段来拦截API
22.8.3 Last MessageBox Info示例程序
第Ⅴ部分 结构化异常处理
第23章 终止处理程序
第24章 异常处理程序与软件异常
24.1 通过实例理解异常过滤程序和异常处理程序
24.1.1 Funcmeister1函数
24.1.2 Funcmeister2函数
24.2 EXCEPTION_EXECUTE_HANDLER1
24.2.1 一些有用的例子
24.2.2 全局展开
24.2.3 停止全局展开
24.3 EXCEPTION_CONTINUE_EXECUTION
24.4 EXCEPTION_CONTINUE_SEARCH0
24.5 GetExceptionCode2
24.6 GetExceptionInformation6
24.7 软件异常
第25章 未处理异常、向量化异常处理与C++异常
25.1 UnhandledExceptionFilter函数详解
25.2 即时调试
25.3 电子表格示例程序
25.4 向量化异常和继续处理程序
25.5 C++异常与结构化异常的比较
25.6 异常与调试器
第26章 错误报告与应用程序恢复
26.1 Windows错误报告控制台
26.2 可编程的Windows错误报告
26.3 对进程中所有的问题报告进行定制
26.4 问题报告的创建与定制
26.4.1 创建一个自定义的问题报告
26.4.2 设置报告参数:WerReportSetParameter
26.4.3 将小型转储文件放入报告:WerReportAddDump8
26.4.4 将任意文件放入报告:WerReportAddFile9
26.4.5 修改对话框文本:WerReportSetUIOption0
26.4.6 提交错误报告:WerReportSubmit0
26.4.7 关闭问题报告:WerReportCloseHandle
26.4.8 Customized WER示例程序
26.5 应用程序的自动重启与恢复
26.5.1 应用程序的自动重启
26.5.2 对应用程序恢复的支持
第Ⅵ部分
附录A 构建环境
附录B 消息处理宏、子控件宏和API宏
索引
· · · · · · (收起)

读后感

评分

刚刚看Part1。 之前读过上一版的书,帮助很大。 这本书里加了不少新东西,内容也非常有深度。  

评分

第一遍读过去肯定要忘,东西太多了。至少要读两遍。 btw,第4版有关于window messaging的一章,不知道为啥第5版里删掉了。  

评分

刚刚看Part1。 之前读过上一版的书,帮助很大。 这本书里加了不少新东西,内容也非常有深度。  

评分

怎么评价这本书呢?书买了好几年,我承认很多内容就一直没有看懂过。只是每当遇到难以解决的问题时,我就会翻开这本书--问题于是迎刃而解!对于Windows编程中的很多概念,也是从这本书开始澄清的,比如线程和进程的实质,Windows消息循环的原理等等。 这不是一本Windows编程的入...  

评分

大二买了这本书,一直到现在,已经有四年了吧! 内容很经典。 书上介绍的内容是一些WINDOWS编程基础的内容。 如开始介绍的内核对象,内存分配管理,WINDOWS消息机制等问题。 我拿WINDOWS消息机制来说, 虽然介绍了WINDOWS消息的一些内部机制, 但是绝对没有彻底讲消息到底是怎...  

用户评价

评分

这本书的结构安排堪称艺术。它并非简单地罗列API,而是围绕着Windows操作系统的核心功能,构建起一个逻辑严密的知识体系。从最基础的进程和线程模型开始,逐步过渡到文件I/O、网络编程,最后深入到安全性和注册表操作。这种递进式的结构,让初学者也能沿着清晰的路径稳步前进,而有经验的开发者则可以精准地定位到自己薄弱的环节进行重点突破。我个人尤其喜欢它在介绍Windows消息循环和窗口管理时所展现出的细腻笔触,它清晰地解释了GUI事件驱动模型的底层实现,这对于开发复杂的桌面应用是核心竞争力。全书的例子代码都非常精炼且实用,没有太多冗余的“Hello World”式的代码,每一个函数调用背后都蕴含着深刻的设计考量,读起来让人感觉每时每刻都在学习真正的“硬核”技术。

评分

老实说,这本书的排版和索引做得非常到位,对于一本工具书来说,易用性至关重要。当我需要快速查阅某个特定的内核对象句柄管理细节或者某个特定版本的API兼容性信息时,清晰的章节划分和详尽的索引能够迅速将我引导到正确的位置。我很少看到一本书能将“理论的深度”与“工具书的实用性”结合得如此完美。这本书真正做到了成为我桌面上最常用的一本参考资料,而不是仅仅躺在书架上落灰。它对Win32 API的理解,已经超越了我们日常工作中可能接触到的绝大多数场景,它教会我们如何像微软的工程师一样去思考系统资源的分配和生命周期管理。对于任何想要在Windows平台上构建持久化、高性能软件的开发者而言,这本书提供的知识广度与深度,完全值回票价,是真正意义上的“内功心法”。

评分

说实话,这本书的阅读体验是充满挑战但也极具成就感的。它没有采用那种轻松愉快的教学口吻,而是采取了一种非常严谨、近乎教科书式的论述方式。初次接触可能会觉得有些晦涩,尤其是在处理一些涉及到内核对象和底层数据结构的部分时,需要反复对照官方文档才能完全消化。但是,一旦你跟上作者的思路,你会发现这种严谨性带来的好处是无可替代的——那就是对技术原理的精确掌握。我特别欣赏作者对各种“陷阱”和“最佳实践”的细致剖析。例如,书中详细阐述了在不同Windows版本下某些API行为的细微差别,这在进行跨版本兼容性开发时,提供了极大的帮助。这本书更像是一本高级工程师之间的心法交流,它不仅仅告诉你“怎么做”,更重要的是告诉你“为什么这么做”,以及“不这么做会有什么后果”。它推动我跳出了仅仅调用函数库的层面,真正开始思考操作系统的设计哲学。

评分

这本书简直是为那些想深入挖掘操作系统底层奥秘的程序员量身打造的利器!我刚翻开前几页,就被作者那种对技术细节的极致追求所折服。它不是那种停留在表面概念的“入门指南”,而是实实在在地带你走入Windows API的丛林深处。读完前三分之一,我感觉自己对进程间通信(IPC)的理解上升到了一个新的高度。特别是关于内存管理和线程同步的章节,讲解得深入且透彻,那些复杂的内存模型和同步原语,在作者的笔下变得条理清晰,仿佛拨开云雾见青天。我过去在实际项目中遇到的那些难以捉摸的死锁和资源竞争问题,现在都能找到理论支撑和具体的解决方案。这本书的厚度本身就说明了其内容的广度和深度,它迫使我必须放慢速度,仔细揣摩每一个代码示例和API调用的真正含义。对于任何想要编写高性能、高可靠性的原生Windows应用程序的工程师来说,这本书绝对是书架上不可或缺的参考宝典,每一次重读都能发现新的领悟。

评分

我购入这本书的主要目的是想提升我的系统级调试和性能优化能力。读完关于异常处理和结构化异常处理(SEH)的章节后,我对如何构建健壮的应用程序有了全新的认识。作者对如何正确地捕获、过滤和恢复异常的讲解,细致到令人发指,这对于处理那些难以预料的运行时错误至关重要。更让我惊喜的是,书中对延迟加载DLL和进程启动过程的深入剖析,直接帮我定位到了一个困扰团队很久的启动性能瓶颈。通过书中提供的工具和方法论,我们成功地将应用程序的冷启动时间缩短了近30%。这本书并非那种可以快速扫读的读物,它需要你手中随时备着一台装有调试器的机器,边读边实践。每当书中提到一个复杂的同步机制或一个鲜为人知的系统调用时,我都会忍不住停下来,在虚拟机中搭建场景进行验证,这种互动式的学习过程,极大地巩固了知识的吸收。

评分

没什么新内容,相当失望,还不如去看windows system programming,名声果然是吹出来的。。

评分

这个版本追加了很多针对vista的篇幅,还是那么的经典~~

评分

大体扫了扫

评分

范例均采用C++和winAPI编写,如要深入理解,更需了解winAPI

评分

Win的APUE对应物。看了同步机制的部分,先放一边了

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

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有