×
暂无评论
图文详情
  • ISBN:9787302609322
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:868
  • 出版时间:2022-10-01
  • 条形码:9787302609322 ; 978-7-302-60932-2

本书特色

为特别响应广大忠实读者的需求,荣获“中国书刊协会全行业畅销书”称号的《Windows核心编程》低调推出了中文限量版。 全新亮相的《Windows核心编程》(第5版 中文限量版)一共包含5卷,分别采用5大具有典型国风的色彩作为区分。 为了满足不同年龄段的读者多层次的阅读需求,为了帮助读者化整为零,化繁为简,为了尽可能营造出“慢读”的意境,从而帮助读者更容易进入心流并落实四到:眼到、心到、脑到和手到,《Windows核心编程》更是在内容和视觉上也进行了精心的设计、更新和修订。当然,重中之重仍然是更准确无误的内容。

内容简介

《Windows核心编程(第5版 中文限量版)》是一本经典的Windows核心编程指南,从第1版到第5版,引领着数十万程序员走入Windows开发阵营,培养了大批精英。 作为Windows开发人员的推荐参考,《Windows核心编程(第5版 中文限量版)》是为打算理解Windows的C和C++程序员精心设计的。第5版全面覆盖Windows XP,Windows Vista和Windows Server 2008中的170个新增函数和Windows特性。书中还讲解了Windows系统如何使用这些特性,我们开发的应用程序又如何充分使用这些特性,如何自行创建新的特性。

目录

第I 部分 必 备 知 识 第1 章 错误处理 3 第2 章 字符和字符串处理 11 第3 章 内核对象 35 第II 部分 工 作 机 理 第4 章 进程 75 第5 章 作业 139 第6 章 线程基础 161 第7 章 线程调度、优先级和亲和性 191 第8 章 用户模式下的线程同步 231 第9 章 用内核对象进行线程同步 271 第10 章 同步和异步设备I/O 325 第11 章 Windows 线程池 381 第12 章 纤程 407 第III 部分 内 存 管 理 第13 章 Windows 内存架构 417 第14 章 探索虚拟内存 443 第15 章 在应用程序中使用虚拟内存 469 第16 章 线程栈 505 第17 章 内存映射文件 519 第18 章 堆 581 第IV 部分 动态链接库 第19 章 DLL 基础 601 第20 章DLL 高级技术 619 第21 章 线程局部存储 667 第22 章 DLL 注入和API 拦截 675 第V 部分 结构化异常处理 第23 章 终止处理程序 739 第24 章 异常处理程序与软件异常 761 第25 章 未处理异常、向量化异常处理与C 异常 791 第26 章 错误报告与应用程序恢复 821 附 录 附录A 生成环境 851 附录B 消息处理宏、子控件宏和API 宏 865 索引 871 详细目录 第I 部分 必 备 知 识 第1 章 错误处理 3 1.1 定义自己的错误码 7 1.2 ErrorShow 示例程序 8 第2 章 字符和字符串处理 11 2.1 字符编码 12 2.2 ANSI 字符和Unicode 字符与字符串数据类型 14 2.3 Windows 中的Unicode 和ANSI 函数 16 2.4 C 运行库中的Unicode 函数和ANSI 函数 19 2.5 C 运行库中的安全字符串函数 19 2.4.1 初识新的安全字符串函数 20 2.4.2 字符串处理时如何获得更多控制 24 2.4.3 Windows 字符串函数 26 2.6 为何要用Unicode 27 2.7 推荐的字符和字符串处理方式 28 2.8 Unicode 与ANSI 字符串转换 29 2.8.1 导出ANSI 和Unicode DLL 函数 31 2.8.2 判断文本是ANSI 还是Unicode 33 第3 章 内核对象 35 3.1 何为内核对象 35 3.1.1 使用计数 37 3.1.2 安全性 37 3.2 进程的内核对象句柄表 40 3.2.1 创建内核对象 41 3.2.2 关闭内核对象 43 3.3 跨进程边界共享内核对象 46 3.3.1 使用对象句柄继承 46 3.3.2 改变句柄的标志 50 3.3.3 为对象命名 51 3.3.4 终端服务命名空间 56 3.3.5 专有命名空间 57 3.3.6 复制对象句柄 66 第II 部分 工 作 机 理 第4 章 进程 75 4.1 编写**个Windows 应用程序 76 4.1.1 进程实例句柄 81 4.1.2 进程前一个实例的句柄 84 4.1.3 进程的命令行 84 4.1.4 进程的环境变量 86 4.1.5 进程的亲和性 92 4.1.6 进程的错误模式 92 4.1.7 进程当前所在的驱动器和目录 93 4.1.8 进程的当前目录 94 4.1.9 系统版本 95 4.2 CreateProcess 函数 99 4.2.1 pszApplicationName 参数和pszCommandLine 参数 99 4.2.2 参数psaProcess,psaThread 和bInheritHandles 101 4.2.3 fdwCreate 参数 104 4.2.4 pvEnvironment 参数 106 4.2.5 pszCurDir 参数 106 4.2.6 psiStartInfo 参数 106 4.2.7 ppiProcInfo 参数 113 4.3 终止进程 116 4.3.1 主线程的入口点函数返回 116 4.3.2 ExitProcess 函数 116 4.3.3 TerminateProcess 函数 118 4.3.4 当进程中的所有线程终止时 119 4.3.5 当进程终止运行时 119 4.4 子进程 120 4.5 管理员以标准用户权限运行 122 4.5.1 自动提升进程权限 126 4.5.2 手动提升进程权限 127 4.5.3 何为当前权限上下文 129 4.5.4 枚举系统中正在运行的进程 131 4.5.5 Process Information 示例程序 132 第5 章 作业 139 5.1 对作业中的进程施加限制 144 5.2 将进程放入作业中 151 5.3 终止作业中的所有线程 152 5.4 作业通知 156 5.5 Job Lab 示例程序 158 第6 章 线程基础 161 6.1 何时创建线程 162 6.2 何时不应该创建线程 164 6.3 编写**个线程函数 165 6.4 CreateThread 函数 166 6.4.1 psa 参数 167 6.4.2 cbStackSize 参数 167 6.4.3 pfnStartAddr 参数和pvParam 参数 168 6.4.4 dwCreateFlags 参数 169 6.4.5 pdwThreadID 参数 169 6.5 终止运行线程 170 6.5.1 线程函数返回 170 6.5.2 ExitThread 函数 170 6.5.3 TerminateThread 函数 171 6.5.4 进程终止运行时 171 6.5.5 线程终止运行时 172 6.6 线程内幕 173 6.7 C/C 运行库注意事项 175 6.7.1 用_beginthreadex 而不要用CreateThread 创建线程 185 6.7.2 绝对不应该调用的C/C 运行库函数 186 6.8 了解自己的身份 187 第7 章 线程调度、优先级和亲和性 191 7.1 线程的挂起和恢复 193 7.2 进程的挂起和恢复 194 7.3 睡眠 196 7.4 切换到另一个线程 196 7.5 在超线程CPU 上切换到另一个线程 197 7.6 线程的执行时间 197 7.7 在实际上下文中谈CONTEXT 结构 202 7.8 线程优先级 207 7.9 从抽象角度看优先级 208 7.10 优先级编程 211 7.10.1 动态提升线程优先级 214 7.10.2 为前台进程调整调度程序 216 7.10.3 调度I/O 请求优先级 216 7.10.4 Scheduling Lab 示例程序 218 7.11 亲和性 224 第8 章 用户模式下的线程同步 231 8.1 原子访问:Interlocked 系列函数 232 8.2 高速缓存行 239 8.3 高级线程同步 241 8.4 关键段 243 8.4.1 关键段:细节 246 8.4.2 关键段和自旋锁 249 8.4.3 关键段和错误处理 250 8.5 Slim 读/ 写锁 251 8.6 条件变量 254 8.6.1 Queue 示例程序 255 8.6.2 停止线程时的死锁问题 265 8.6.3 一些有用的技巧和技术 267 第9 章 用内核对象进行线程同步 271 9.1 等待函数 274 9.2 等待成功所引起的副作用 276 9.3 事件内核对象 278 9.4 可等待的计时器内核对象 289 9.4.1 让可等待的计时器入队APC 调用 293 9.4.2 计时器未尽事宜 295 9.5 信号量内核对象 296 9.6 互斥量内核对象 299 9.6.1 遗弃问题 301 9.6.2 互斥量与关键段的比较 302 9.6.3 Queue 示例程序 302 9.7 线程同步对象速查表 312 9.8 其他线程同步函数 313 9.8.1 异步设备I/O 313 9.8.2 WaitForInputIdle 函数 314 9.8.3 MsgWaitForMultipleObjects(Ex) 函数 315 9.8.4 WaitForDebugEvent 函数 315 9.8.5 SignalObjectAndWait 函数 316 9.8.6 使用等待链遍历API 来检测死锁 317 第10 章 同步和异步设备I/O 325 10.1 打开和关闭设备 326 10.2 使用文件设备 335 10.2.1 取得文件的大小 335 10.2.2 定位文件指针 337 10.2.3 设置文件尾 339 10.3 执行同步设备I/O 339 10.3.1 将数据回写到设备 340 10.3.2 同步I/O 取消 340 10.4 异步设备I/O 基础 342 10.4.1 OVERLAPPED 结构 343 10.4.2 异步设备I/O 的注意事项 345 10.4.3 取消队列中的设备I/O 请求 347 10.5 接收I/O 请求完成通知 348 10.5.1 触发设备内核对象 348 10.5.2 触发事件内核对象 350 10.5.3 可提醒I/O 353 10.5.4 I/O 完成端口 359 10.5.5 模拟已完成的I/O 请求 371 第11 章 Windows 线程池 381 11.1 情形1:异步调用函数 382 11.1.1 显式控制工作项 383 11.1.2 Batch 示例程序 385 11.2 情形2:定时调用函数 389 11.3 情形3:在内核对象触发时调用函数 395 11.4 情形4:在异步I/O 请求完成时调用函数 397 11.5 回调函数的终止操作 399 11.5.1 对线程池进行定制 400 11.5.2 得体地销毁线程池:清理组 403 第12 章 纤程 407 第III 部分 内 存 管 理 第13 章 Windows 内存架构 417 13.1 进程的虚拟地址空间 417 13.2 虚拟地址空间的分区 418 13.2.1 空指针赋值分区 419 13.2.2 用户模式分区 419 13.3 地址空间中的区域 422 13.4 为区域调拨物理存储 423 13.5 物理存储和分页文件 424 13.6 页面保护属性 428 13.6.1 写时复制 429 13.6.2 一些特殊的访问保护属性标志 430 13.7 实例分析 430 13.8 数据对齐的重要性 438 第14 章 探索虚拟内存 443 14.1 系统信息 443 14.2 虚拟内存状态 453 14.3 NUMA 机器中的内存管理 455 14.4 确定地址空间的状态 458 14.4.1 VMQuery 函数 460 14.4.2 示例程序:虚拟内存映射 466 第15 章 在应用程序中使用虚拟内存 469 15.1 预订地址空间区域 470 15.2 为预订的区域调拨物理存储 472 15.3 同时预订和调拨物理存储 473 15.4 何时调拨物理存储 474 15.5 撤销调拨物理存储并释放区域 476 15.5.1 何时撤销调拨物理存储 477 15.5.2 虚拟内存分配示例程序 478 15.6 更改保护属性 487 15.7 重置物理存储的内容 488 15.8 地址窗口扩展 492 第16 章 线程栈 505 16.1 C/C 运行库的栈检查函数 510 16.2 Summation 示例程序 512 第17 章 内存映射文件 519 17.1 映射到内存的可执行文件和DLL 520 17.1.1 同一个可执行文件或DLL 的多个实例不会共享静态数据 521 17.1.2 在同一个可执行文件或DLL 的多个实例间共享静态数据 523 17.1.3 Application Instances 示例程序 529 17.2 映射到内存的数据文件 533 17.2.1 方法1:一个文件,一个缓冲区 533 17.2.2 方法2:两个文件,一个缓冲区 534 17.2.3 方法3:一个文件,两个缓冲区 534 17.2.4 方法4:一个文件,零个缓冲区 534 17.3 使用内存映射文件 535 17.3.1 第1 步:创建或打开文件内核对象 535 17.3.2 第2 步:创建文件映射内核对象 536 17.3.3 第3 步:将文件的数据映射到进程的地址空间 540 17.3.4 第4 步:从进程的地址空间撤销对文件数据的映射 543 17.3.5 第5 步和第6 步:关闭文件映射对象和文件对象 545 17.3.6 File Reverse 示例程序 546 17.4 用内存映射文件处理大文件 553 17.5 内存映射文件和一致性 555 17.6 为内存映射文件指定基地址 556 17.7 内存映射文件的实现细节 557 17.8 用内存映射文件在进程间共享数据 558 17.9 以分页文件作为后备存储的内存映射文件 559 17.10 稀疏调拨的内存映射文件 565 第18 章 堆 581 18.1 进程的默认堆 582 18.2 为什么要创建额外的堆 583 18.2.1 对组件进行保护 583 18.2.2 更高效的内存管理 584 18.2.3 局部访问 584 18.2.4 避免线程同步的开销 585 18.2.5 快速释放 585 18.3 如何创建额外的堆 585 18.3.1 从堆中分配内存块 588 18.3.2 调整内存块的大小 589 18.3.3 获得内存块的大小 590 18.3.4 释放内存块 590 18.3.5 销毁堆 591 18.3.6 在C 中使用堆 591 18.4 其他堆函数 594 第IV 部分 动态链接库 第19 章 DLL 基础 601 19.1 DLL 和进程的地址空间 602 19.2 纵观全局 605 19.2.1 生成DLL 模块 607 19.2.2 生成可执行模块 613 19.2.3 运行可执行模块 616 第20 章 DLL 高级技术 619 20.1 DLL 模块的显式加载和符号链接 619 20.1.1 显式加载DLL 模块 621 20.1.2 显式卸载DLL 模块 624 20.1.3 显式链接到导出的符号 627 20.2 DLL 的入口点函数 628 20.2.1 DLL_PROCESS_ATTACH 通知 630 20.2.2 DLL_PROCESS_DETACH 通知 631 20.2.3 DLL_THREAD_ATTACH 通知 633 20.2.4 DLL_THREAD_DETACH 通知 634 20.2.5 DllMain 的序列化调用 635 20.2.6 DllMain 和C/C 运行库 638 20.3 延迟加载DLL 639 20.4 函数转发器 652 20.5 已知的DLL 652 20.6 DLL 重定向 654 20.7 模块的基址重定位 655 20.8 模块的绑定 662 第21 章 线程局部存储 667 21.1 动态TLS 668 21.2 静态TLS 673 第22 章 DLL 注入和API 拦截 675 22.1 DLL 注入的一个例子 676 22.2 使用注册表来注入DLL 678 22.3 使用Windows 挂钩来注入DLL 680 22.4 使用远程线程来注入DLL 694 22.4.1 Inject Library 示例程序 698 22.4.2 Image Walk DLL 705 22.5 使用木马DLL 来注入DLL 708 22.6 将DLL 作为调试器来注入 708 22.7 使用CreateProcess 来注入代码 709 22.8 API 拦截的一个例子 709 22.8.1 通过覆盖代码来拦截API 710 22.8.2 通过修改模块的导入段来拦截API 711 22.8.3 Last MessageBox Info 示例程序 715 第V 部分 结构化异常处理 第23 章 终止处理程序 739 第24 章 异常处理程序与软件异常 761 24.1 通过实例理解异常过滤程序和异常处理程序 762 24.1.1 Funcmeister1 函数 762 24.1.2 Funcmeister2 函数 763 24.2 EXCEPTION_EXECUTE_HANDLER 765 24.2.1 一些有用的例子 766 24.2.2 全局展开 769 24.2.3 停止全局展开 772 24.3 EXCEPTION_CONTINUE_EXECUTION 774 24.4 EXCEPTION_CONTINUE_SEARCH 776 24.5 GetExceptionCode 778 24.6 GetExceptionInformation 函数 783 24.7 软件异常 787 第25 章 未处理异常、向量化异常处理与C 异常 791 25.1 UnhandledExceptionFilter 函数详解 794 25.2 即时调试 799 25.3 Spreadsheet 示例程序 802 25.4 向量化异常和继续处理程序 814 25.5 C 异常与结构化异常的比较 815 25.6 异常与调试器 817 第26 章 错误报告与应用程序恢复 821 26.1 Windows 错误报告控制台 821 26.2 可编程的Windows 错误报告 824 26.3 定制进程中的所有问题报告 826 26.4 问题报告的创建与定制 828 26.4.1 创建自定义问题报告 830 26.4.2 设置报告参数:WerReportSetParameter 832 26.4.3 将小型转储文件放入报告:WerReportAddDump 832 26.4.4 将任意文件放入报告:WerReportAddFile 833 26.4.5 修改对话框文本:WerReportSetUIOption 834 26.4.6 提交错误报告:WerReportSubmit 835 26.4.7 关闭问题报告:WerReportCloseHandle 836 26.4.8 Customized WER 示例程序 837 26.5 应用程序的自动重启与恢复 845 26.5.1 应用程序的自动重启 845 26.5.2 应用程序恢复的支持 846 附 录 附录A 生成环境 851 附录B 消息处理宏、子控件宏和API 宏 865 索引 871
展开全部

作者简介

杰弗里·李希特 (Jeffrey Richter) 知名Windows和.NET技术专家,专业畅销书作者。他的《Windows核心编程》和《CLR》系列培育了好几代软件开发人员。他是Wintellect公司的联合创始人,也是MSDN杂志.NET专栏的特邀编辑。1999年开始,他就以技术顾问的方式与.NET框架开发团队紧密合作,共同经历了.NET框架的孕育与诞生,对.NET思想的领悟、对.NET的细节熟稔,是其他任何作者难以企及的,他是.NET领域当之无愧的一面旗帜。杰弗里目前供职于微软。 克里斯托弗·纳萨雷 (Christophe Nasarre) MSDN杂志撰稿人,Business Objects的软件架构师和开发部门领导,该公司致力于通过商务智能解决方案来提升决策能力和绩效。 周 靖 微软MVP(*有价值专家),技术型资深译者。涉猎广泛,具有深厚的技术功底和良好的文学素养。早期痴迷于硬件,曾多年担任《微型计算机》杂志特约作者。继而潜心钻研程序设计并在这方面积累了丰富的经验。翻译风格严谨、准确、朴实、流畅,深受读者好评。代表译著有《C++入门经典》(z新版第10版)、《Windows核心编程》(z新版第5版)、《CLR via C》(z新版第4版)和《Visual C#从入门到精通》(z新版第10版)等。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航