• Windows核心编程
21年品牌 40万+商家 超1.5亿件商品

Windows核心编程

正版消毒塑封,15点前订单当天发 91839024835741625926

29.61 1.2折 256 九五品

仅1件

天津宝坻
认证卖家担保交易快速发货售后保障

作者[美]杰弗里·李希特 (Jeffrey Richter) (法)克里斯托弗·纳萨雷(Christophe Nasarre)著 周靖 译

出版社清华大学出版社

出版时间2022-10

版次1

装帧其他

货号91839024835741625926

上书时间2024-12-19

转转图书的店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九五品
图书标准信息
  • 作者 [美]杰弗里·李希特 (Jeffrey Richter) (法)克里斯托弗·纳萨雷(Christophe Nasarre)著 周靖 译
  • 出版社 清华大学出版社
  • 出版时间 2022-10
  • 版次 1
  • ISBN 9787302609322
  • 定价 256.00元
  • 装帧 其他
  • 开本 16开
  • 纸张 胶版纸
  • 页数 964页
  • 字数 1359千字
【内容简介】
《Windows核心编程(第5版 中文限量版)》是一本经典的Windows核心编程指南,从第1版到第5版,引领着数十万程序员走入Windows开发阵营,培养了大批精英。
  作为Windows开发人员的必备参考,《Windows核心编程(第5版 中文限量版)》是为打算理解Windows的C和C
  程序员精心设计的。第5版全面覆盖Windows XP,Windows Vista和Windows Server 2008中的170个新增函数和Windows特性。书中还讲解了Windows系统如何使用这些特性,我们开发的应用程序又如何充分使用这些特性,如何自行创建新的特性。
【作者简介】
杰弗里·李希特

(Jeffrey Richter)

知名Windows和.NET技术专家,专业畅销书作者。他的《Windows核心编程》和《CLR》系列培育了好几代软件开发人员。他是Wintellect公司的联合创始人,也是MSDN杂志.NET专栏的特邀编辑。1999年开始,他就以技术顾问的方式与.NET框架开发团队紧密合作,共同经历了.NET框架的孕育与诞生,对.NET思想的领悟、对.NET的细节熟稔,是其他任何作者难以企及的,他是.NET领域当之无愧的一面旗帜。杰弗里目前供职于微软。

克里斯托弗·纳萨雷

(Christophe Nasarre)

MSDN杂志撰稿人,Business Objects的软件架构师和开发部门领导,该公司致力于通过商务智能解决方案来提升决策能力和绩效。

周   靖

微软MVP(最有价值专家),技术型资深译者。涉猎广泛,具有深厚的技术功底和良好的文学素养。早期痴迷于硬件,曾多年担任《微型计算机》杂志特约作者。继而潜心钻研程序设计并在这方面积累了丰富的经验。翻译风格严谨、准确、朴实、流畅,深受读者好评。代表译著有《C  入门经典》(最新版第10版)、《Windows核心编程》(最新版第5版)、《CLR via C》(最新版第4版)和《Visual C#从入门到精通》(最新版第10版)等。
【目录】
第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
点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP