Windows核心编程(第5版):微软技术丛书

Windows核心编程(第5版)
9.2
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (Jeffrey Richter)
出版社: 清华大学出版社
2008-09
版次: 1
ISBN: 9787302184003
定价: 99.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 770页
字数: 1210千字
正文语种: 简体中文
  •   《Windows核心编程(第5版)》是为打算理解Windows的C和C++程序员精心设计的,作为Windows开发人员的必备参考。第5版全面覆盖WindowsXP,WindowsVista和WindowsServer2008中的170个新增函数和Windows特性。书中还讲解了Windows系统如何使用这些特性,我们开发的应用程序又如何充分使用这些特性,如何自行创建新的特性。  《Windows核心编程(第5版)》重要主题:  如何为32位和64位Windows系统构建和实现应用程序;  如何新建和处理进程与作业;  如何调度.管理、同步和销毁线程;  如何通过I/O完成端口执行同步和异步设备I/O操作;  如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存;  如何处理默认调拨的线程栈物理存储;  如何为延迟加载、API拦截和进程注入构建DLL;  如何使用结构化异常处理、Windows错误恢复和应用程序重启等机制。  《微软技术丛书》包括以下几个子系列:  从入门到精通:适合新手程序员的实用教程;侧重于基础技术和特征;提供范例文件。  技术内幕:专业、必备的参考大全;包含丰富、实用的范例代码;帮助读者熟练掌握微软件技术。  高级编程:侧重于高级特性、技术和解决问题;包含丰富、适用性强的范例代码;帮助读者精通微软技术。  精通&宝典:着重剖析应用技巧,以帮助提高工作效率;主题包括办公应用和开发工具。  认证考试教材:完全根据考试要求来阐述每一个知识点;提供可供搜索的Ebook(英文版)和训练题;提供实际场景、案例分析和故障诊断实验。   JeffreyRichter是Wintellect公司的创始人之一,该公司从事培训,调试和咨询,致力于帮助其他公司以更快的速度开发出更优秀的软件。他著作颇丰,代表作有畅销书CLRviaC#。他还是MSDNMagazine的特约编辑和专栏作家。  ChristopheNasarre是BusinessObjicts的软件架构师和开发部门领导,该公司致力于帮助其他企业更好地专注于其主营业务,通过商业智能方案来提升决策能力和业绩。他为Aiddison-Wesley,APress和MicrosoftPress出版的许多图书担任过技术审校,。此外,他还是MSDNMagazine的撰稿人。  葛子昂,1998年毕业于南京理工大学计算机系,曾先后任职于上海育碧电脑软件有限公司和上海旭上电子有限公司,从事游戏软件的开发及图形处理器的设计。2005年加入微软中国研发集团/服务器与开发工具事业部至今,一直致力于WindowsCommunicationFoundation及相关领域的研发。代表译著有《NET设计规范》。  周靖,1983年接触苹果机开始,“浸染”IT业数十年,涉猎广泛,具有深厚的技术功底和良好的文学素养。早期痴迷于硬件,曾担任《微型计算机》杂志特约作者多年。继而潜心钻研编程,并乐在其中,积累了丰富的经验。其翻译风格严谨、准确、朴实、流畅,深受读者欢迎。代表译著有《c++面向对象程序设计》(国内销量超过3万册)和《c#高级程序员指南》等。  廖敏,毕业于上海交通大学软件学院并获硕士学位,目前在微软中国研发集团/服务器与开发工具事业部担任软件设计工程师。 第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 为何要用Unicode2.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 dwCreateFlags6.4.5 pdwThreadID76.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/O9.8.2 WaitForInputIdle函数9.8.3 MsgWaitForMultipleObjects(Ex)函数9.8.4 WaitForDebugEvent函数9.8.5 SignalObjectAndWait函数9.8.6 使用等待链遍历API来检测死锁第10章 同步设备I/O与异步设备I/O10.1 打开和关闭设备细看CreateFile函数10.2 使用文件设备10.2.1 取得文件的大小10.2.2 设置文件指针的位置10.2.3 设置文件尾10.3 执行同步设备I/O10.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/O10.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 映射到内存的可执行文件和DLL17.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 延迟载入DLL20.4 函数转发器20.5 已知的DLL20.6 DLL重定向20.7 模块的基地址重定位20.8 模块的绑定第21章 线程局部存储区21.1 动态TLS21.2 静态TLS0第22章 DLL注入和API拦截22.1 DLL注入的一个例子22.2 使用注册表来注入DLL22.3 使用Windows挂钩来注入DLL22.4 使用远程线程来注入DLL22.4.1 Inject Library示例程序22.4.2 Image Walk DLL22.5 使用木马DLL来注入DLL22.6 把DLL作为调试器来注入22.7 使用CreateProcess来注入代码22.8 API拦截的一个例子922.8.1 通过覆盖代码来拦截API022.8.2 通过修改模块的导入段来拦截API22.8.3 Last MessageBox Info示例程序第Ⅴ部分 结构化异常处理第23章 终止处理程序第24章 异常处理程序与软件异常24.1 通过实例理解异常过滤程序和异常处理程序24.1.1 Funcmeister1函数24.1.2 Funcmeister2函数24.2 EXCEPTION_EXECUTE_HANDLER124.2.1 一些有用的例子24.2.2 全局展开24.2.3 停止全局展开24.3 EXCEPTION_CONTINUE_EXECUTION24.4 EXCEPTION_CONTINUE_SEARCH024.5 GetExceptionCode224.6 GetExceptionInformation624.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 设置报告参数:WerReportSetParameter26.4.3 将小型转储文件放入报告:WerReportAddDump826.4.4 将任意文件放入报告:WerReportAddFile926.4.5 修改对话框文本:WerReportSetUIOption026.4.6 提交错误报告:WerReportSubmit026.4.7 关闭问题报告:WerReportCloseHandle26.4.8 Customized WER示例程序26.5 应用程序的自动重启与恢复26.5.1 应用程序的自动重启26.5.2 对应用程序恢复的支持第Ⅵ部分附录A 构建环境附录B 消息处理宏、子控件宏和API宏索引
  • 内容简介:
      《Windows核心编程(第5版)》是为打算理解Windows的C和C++程序员精心设计的,作为Windows开发人员的必备参考。第5版全面覆盖WindowsXP,WindowsVista和WindowsServer2008中的170个新增函数和Windows特性。书中还讲解了Windows系统如何使用这些特性,我们开发的应用程序又如何充分使用这些特性,如何自行创建新的特性。  《Windows核心编程(第5版)》重要主题:  如何为32位和64位Windows系统构建和实现应用程序;  如何新建和处理进程与作业;  如何调度.管理、同步和销毁线程;  如何通过I/O完成端口执行同步和异步设备I/O操作;  如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存;  如何处理默认调拨的线程栈物理存储;  如何为延迟加载、API拦截和进程注入构建DLL;  如何使用结构化异常处理、Windows错误恢复和应用程序重启等机制。  《微软技术丛书》包括以下几个子系列:  从入门到精通:适合新手程序员的实用教程;侧重于基础技术和特征;提供范例文件。  技术内幕:专业、必备的参考大全;包含丰富、实用的范例代码;帮助读者熟练掌握微软件技术。  高级编程:侧重于高级特性、技术和解决问题;包含丰富、适用性强的范例代码;帮助读者精通微软技术。  精通&宝典:着重剖析应用技巧,以帮助提高工作效率;主题包括办公应用和开发工具。  认证考试教材:完全根据考试要求来阐述每一个知识点;提供可供搜索的Ebook(英文版)和训练题;提供实际场景、案例分析和故障诊断实验。
  • 作者简介:
      JeffreyRichter是Wintellect公司的创始人之一,该公司从事培训,调试和咨询,致力于帮助其他公司以更快的速度开发出更优秀的软件。他著作颇丰,代表作有畅销书CLRviaC#。他还是MSDNMagazine的特约编辑和专栏作家。  ChristopheNasarre是BusinessObjicts的软件架构师和开发部门领导,该公司致力于帮助其他企业更好地专注于其主营业务,通过商业智能方案来提升决策能力和业绩。他为Aiddison-Wesley,APress和MicrosoftPress出版的许多图书担任过技术审校,。此外,他还是MSDNMagazine的撰稿人。  葛子昂,1998年毕业于南京理工大学计算机系,曾先后任职于上海育碧电脑软件有限公司和上海旭上电子有限公司,从事游戏软件的开发及图形处理器的设计。2005年加入微软中国研发集团/服务器与开发工具事业部至今,一直致力于WindowsCommunicationFoundation及相关领域的研发。代表译著有《NET设计规范》。  周靖,1983年接触苹果机开始,“浸染”IT业数十年,涉猎广泛,具有深厚的技术功底和良好的文学素养。早期痴迷于硬件,曾担任《微型计算机》杂志特约作者多年。继而潜心钻研编程,并乐在其中,积累了丰富的经验。其翻译风格严谨、准确、朴实、流畅,深受读者欢迎。代表译著有《c++面向对象程序设计》(国内销量超过3万册)和《c#高级程序员指南》等。  廖敏,毕业于上海交通大学软件学院并获硕士学位,目前在微软中国研发集团/服务器与开发工具事业部担任软件设计工程师。
  • 目录:
    第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 为何要用Unicode2.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 dwCreateFlags6.4.5 pdwThreadID76.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/O9.8.2 WaitForInputIdle函数9.8.3 MsgWaitForMultipleObjects(Ex)函数9.8.4 WaitForDebugEvent函数9.8.5 SignalObjectAndWait函数9.8.6 使用等待链遍历API来检测死锁第10章 同步设备I/O与异步设备I/O10.1 打开和关闭设备细看CreateFile函数10.2 使用文件设备10.2.1 取得文件的大小10.2.2 设置文件指针的位置10.2.3 设置文件尾10.3 执行同步设备I/O10.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/O10.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 映射到内存的可执行文件和DLL17.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 延迟载入DLL20.4 函数转发器20.5 已知的DLL20.6 DLL重定向20.7 模块的基地址重定位20.8 模块的绑定第21章 线程局部存储区21.1 动态TLS21.2 静态TLS0第22章 DLL注入和API拦截22.1 DLL注入的一个例子22.2 使用注册表来注入DLL22.3 使用Windows挂钩来注入DLL22.4 使用远程线程来注入DLL22.4.1 Inject Library示例程序22.4.2 Image Walk DLL22.5 使用木马DLL来注入DLL22.6 把DLL作为调试器来注入22.7 使用CreateProcess来注入代码22.8 API拦截的一个例子922.8.1 通过覆盖代码来拦截API022.8.2 通过修改模块的导入段来拦截API22.8.3 Last MessageBox Info示例程序第Ⅴ部分 结构化异常处理第23章 终止处理程序第24章 异常处理程序与软件异常24.1 通过实例理解异常过滤程序和异常处理程序24.1.1 Funcmeister1函数24.1.2 Funcmeister2函数24.2 EXCEPTION_EXECUTE_HANDLER124.2.1 一些有用的例子24.2.2 全局展开24.2.3 停止全局展开24.3 EXCEPTION_CONTINUE_EXECUTION24.4 EXCEPTION_CONTINUE_SEARCH024.5 GetExceptionCode224.6 GetExceptionInformation624.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 设置报告参数:WerReportSetParameter26.4.3 将小型转储文件放入报告:WerReportAddDump826.4.4 将任意文件放入报告:WerReportAddFile926.4.5 修改对话框文本:WerReportSetUIOption026.4.6 提交错误报告:WerReportSubmit026.4.7 关闭问题报告:WerReportCloseHandle26.4.8 Customized WER示例程序26.5 应用程序的自动重启与恢复26.5.1 应用程序的自动重启26.5.2 对应用程序恢复的支持第Ⅵ部分附录A 构建环境附录B 消息处理宏、子控件宏和API宏索引
查看详情
12
好书推荐 / 更多
Windows核心编程(第5版)
以色列:一个民族的重生
[以色列]丹尼尔·戈迪斯 著
Windows核心编程(第5版)
回望
金宇澄 著
Windows核心编程(第5版)
鼠疫斗士:伍连德自述(上)
伍连德(WuLien-Teh) 著;程光胜、马学博 译;王丽凤 校
Windows核心编程(第5版)
原田泰治的素朴画世界:谁都有的故乡
[日]原田泰治 著;吴菲 译
Windows核心编程(第5版)
桤木王:法国二十世纪文学译丛
[法]图尔尼埃 著;许钧 译
Windows核心编程(第5版)
美国山川风物四记:套装
[美]艾温·威·蒂尔 著;颜元叔 译
Windows核心编程(第5版)
给青年建筑师的信
汉宝德 著
Windows核心编程(第5版)
宋代朝贡体系研究
黄纯艳 著
Windows核心编程(第5版)
万物发明指南:时间旅行者生存手册
[加拿大]瑞安·诺思 著;王乔琦 译
Windows核心编程(第5版)
罪孽的报应:德国和日本的战争记忆
[荷兰]伊恩·布鲁玛 著;倪韬 译
Windows核心编程(第5版)
汗青堂丛书031:奥斯曼帝国1299—1923
[英]卡罗琳·芬克尔(Caroline、Finkel、邓伯宸 徐大成 于丽 译
Windows核心编程(第5版)
乌鸦
[美]博里亚·萨克斯 著