图书介绍
Windows 核心编程【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- (美)杰夫瑞,(法)克里斯托夫著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302184003
- 出版时间:2008
- 标注页数:770页
- 文件大小:213MB
- 文件页数:796页
- 主题词:窗口软件,Windows-程序设计
PDF下载
下载说明
Windows 核心编程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第Ⅰ部分 必备知识3
第1章 错误处理3
1.1定义自己的错误代码7
1.2 ErrorShow示例程序7
第2章 字符和字符串处理10
2.1字符编码11
2.2 ANSI字符和Unicode字符与字符串数据类型12
2.3 Windows中的Unicode函数和ANSI函数14
2.4 C运行库中的Unicode函数和ANSI函数16
2.5 C运行库中的安全字符串函数17
2.5.1初识新的安全字符串函数18
2.5.2在处理字符串时如何获得更多控制21
2.5.3 Windows字符串函数23
2.6为何要用Unicode24
2.7推荐的字符和字符串处理方式25
2.8Unicode与ANSI字符串转换26
2.8.1导出 ANSI和 Unicode DLL函数28
2.8.2判断文本是ANSI还是Unicode29
第3章 内核对象32
3.1何为内核对象32
3.1.1使用计数34
3.1.2内核对象的安全性34
3.2进程内核对象句柄表36
3.2.1创建一个内核对象37
3.2.2关闭内核对象38
3.3跨进程边界共享内核对象42
3.3.1使用对象句柄继承42
3.3.2改变句柄的标志45
3.3.3为对象命名46
3.3.4终端服务命名空间50
3.3.5专有命名空间51
3.3.6复制对象句柄58
第Ⅱ部分 工作机理65
第4章 进程65
4.1编写第一个Windows应用程序66
4.1.1进程实例句柄71
4.1.2进程前一个实例的句柄72
4.1.3进程的命令行73
4.1.4进程的环境变量74
4.1.5进程的关联性79
4.1.6进程的错误模式79
4.1.7进程当前所在的驱动器和目录80
4.1.8进程的当前目录81
4.1.9系统版本82
4.2 CreateProcess函数85
4.2.1 pszApplicationName和pszCommandLine参数86
4.2.2 psaProcess, psaThread和bInheritHandles参数87
4.2.3 fdwCreate参数89
4.2.4 pvEnvironment参数91
4.2.5 pszCurDir参数92
4.2.6 psiStartInfo参数92
4.2.7 ppiProcInfo参数98
4.3终止进程100
4.3.1主线程的入口点函数返回100
4.3.2 ExitProcess函数101
4.3.3 TerminateProcess函数102
4.3.4当进程中的所有线程终止时103
4.3.5当进程终止运行时103
4.4子进程104
4.5管理员以标准用户权限运行时106
4.5.1自动提升进程的权限109
4.5.2手动提升进程的权限111
4.5.3何为当前权限上下文112
4.5.4枚举系统中正在运行的进程114
4.5.5 Process Information示例程序115
第5章 作业121
5.1对作业中的进程施加限制124
5.2将进程放入作业中131
5.3终止作业中的所有线程132
5.4作业通知135
5.5 Job Lab示例程序138
第6章 线程基础140
6.1何时创建线程141
6.2何时不应该创建线程143
6.3编写第一个线程函数144
6.4 CreateThread函数144
6.4.1 psa参数145
6.4.2 cbStackSize参数145
6.4.3 pfnStartAddr和pvParam参数146
6.4.4 dwCreateFlags147
6.4.5 pdwThreadID147
6.5终止运行线程148
6.5.1线程函数返回148
6.5.2 ExitThread函数148
6.5.3 TerminateThread函数149
6.5.4进程终止运行时149
6.5.5线程终止运行时150
6.6线程内幕150
6.7C/C++++运行库注意事项153
6.7.1用_beginthreadex而不要用CreateThread创建线程161
6.7.2绝对不应该调用的C/C++运行库函数161
6.8了解自己的身份162
第7章 线程调度、优先级和关联性165
7.1线程的挂起和恢复166
7.2进程的挂起和恢复167
7.3睡眠169
7.4切换到另一个线程169
7.5在超线程CPU上切换到另一个线程170
7.6线程的执行时间170
7.7在实际上下文中谈CONTEXT结构174
7.8线程优先级178
7.9从抽象角度看优先级179
7.10优先级编程182
7.10.1动态提升线程优先级185
7.10.2为前台进程微调调度程序186
7.10.3调度1/O请求优先级186
7.10.4 Scheduling Lab示例程序188
7.11关联性192
第8章 用户模式下的线程同步197
8.1原子访问:Interlocked系列函数198
8.2高速缓存行203
8.3高级线程同步205
8.4关键段207
8.4.1关键段:细节209
8.4.2关键段和旋转锁212
8.4.3关键段和错误处理213
8.5 Slim读/写锁214
8.6条件变量217
8.6.1 Queue示例程序218
8.6.2在停止线程时的死锁问题225
8.6.3一些有用的窍门和技巧227
第9章 用内核对象进行线程同步230
9.1等待函数232
9.2等待成功所引起的副作用235
9.3事件内核对象236
9.4可等待的计时器内核对象245
9.4.1让可等待的计时器添加APC调用248
9.4.2计时器的剩余问题250
9.5信号量内核对象251
9.6互斥量内核对象253
9.6.1遗弃问题255
9.6.2互斥量与关键段的比较256
9.6.3 Queue示例程序256
9.7线程同步对象速查表264
9.8其他的线程同步函数265
9.8.1异步设备I/0265
9.8.2 WaitForInputIdle函数265
9.8.3 MsgWaitForMultipleObjects(Ex)函数266
9.8.4 WaitForDebugEvent函数267
9.8.5 SignalObjectAndWait函数267
9.8.6使用等待链遍历API来检测死锁268
第10章 同步设备I/O与异步设备I/0275
10.1打开和关闭设备276
10.2使用文件设备285
10.2.1取得文件的大小285
10.2.2设置文件指针的位置286
10.2.3设置文件尾288
10.3执行同步设备I/O289
10.3.1将数据刷新至设备289
10.3.2同步I/0的取消290
10.4异步设备1/O基础291
10.4.1 OVERLAPPED结构292
10.4.2异步设备I/O的注意事项294
10.4.3取消队列中的设备I/O请求296
10.5接收I/O请求完成通知296
10.5.1触发设备内核对象297
10.5.2触发事件内核对象298
10.5.3可提醒I/0301
10.5.4 I/O完成端口306
10.5.5模拟已完成的I/O请求316
第11章 Windows线程池324
11.1情形1:以异步方式调用函数325
11.1.1显式地控制工作项325
11.1.2 Batch示例程序327
11.2情形2:每隔一段时间调用一个函数330
11.3情形3:在内核对象触发时调用一个函数335
11.4情形4:在异步I/O请求完成时调用一个函数337
11.5回调函数的终止操作339
11.5.1对线程池进行定制340
11.5.2得体地销毁线程池:清理组342
第12章 纤程345
第Ⅲ部分 内存管理355
第13章 Windows内存体系结构355
13.1进程的虚拟地址空间355
13.2虚拟地址空间的分区356
13.2.1空指针赋值分区357
13.2.2用户模式分区357
13.3地址空间中的区域360
13.4给区域调拨物理存储器361
13.5物理存储器和页交换文件362
13.6页面保护属性365
13.6.1写时复制366
13.6.2一些特殊的访问保护属性标志367
13.7实例分析367
13.8数据对齐的重要性375
第14章 探索虚拟内存379
14.1系统信息379
14.2虚拟内存状态387
14.3 NUMA机器中的内存管理388
14.4确定地址空间的状态391
14.4.1 VMQuety函数392
14.4.2示例程序:虚拟内存映射397
第15章 在应用程序中使用虚拟内存400
15.1预订地址空间区域400
15.2给区域调拨物理存储器402
15.3同时预订和调拨物理存储器403
15.4何时调拨物理存储器405
15.5撤销调拨物理存储器及释放区域407
15.5.1何时撤销调拨物理存储器407
15.5.2虚拟内存分配示例程序408
15.6改变保护属性414
15.7重置物理存储器的内容415
15.8地址窗口扩展419
第16章 线程栈429
16.1 C/C++运行库的栈检查函数433
16.2 Summation示例程序435
第17章 内存映射文件440
17.1映射到内存的可执行文件和DLL441
17.1.1同一个可执行文件或DLL的多个实例不会共享静态数据442
17.1.2在同一个可执行文件或DLL的多个实例间共享静态数据444
17.1.3 Application Instances示例程序449
17.2映射到内存的数据文件451
17.2.1方法1:一个文件,一块缓存451
17.2.2方法2:两个文件,一块缓存452
17.2.3方法3:一个文件,两块缓存452
17.2.4方法4:一个文件,零个缓存453
17.3使用内存映射文件453
17.3.1第1步:创建或打开文件内核对象454
17.3.2第2步:创建文件映射内核对象455
17.3.3第3步:将文件的数据映射到进程的地址空间458
17.3.4第4步:从进程的地址空间撤销对文件数据的映射461
17.3.5第5步和第6步:关闭文件映射对象和文件对象462
17.3.6 File Reverse示例程序463
17.4用内存映射文件来处理大文件469
17.5内存映射文件和一致性470
17.6给内存映射文件指定基地址471
17.7内存映射文件的实现细节472
17.8用内存映射文件在进程间共享数据473
17.9以页交换文件为后备存储器的内存映射文件474
17.10稀疏调拨的内存映射文件478
第18章 堆491
18.1进程的默认堆491
18.2为什么要创建额外的堆492
18.2.1对组件进行保护493
18.2.2更有效的内存管理493
18.2.3使内存访问局部化494
18.2.4避免线程同步的开销494
18.2.5快速释放495
18.3如何创建额外的堆495
18.3.1从堆中分配内存块497
18.3.2调整内存块的大小498
18.3.3获得内存块的大小499
18.3.4释放内存块500
18.3.5销毁堆500
18.3.6在C++中使用堆500
18.4其他堆函数503
第Ⅳ部分 动态链接库509
第19章 DLL基础509
19.1 DLL和进程的地址空间510
19.2纵观全局512
19.2.1构建DLL模块514
19.2.2构建可执行模块519
19.2.3运行可执行模块522
第20章 DLL高级技术524
20.1 DLL模块的显式载入和符号链接524
20.1.1显式地载入DLL模块525
20.1.2显式地卸载DLL模块529
20.1.3显式地链接到导出符号532
20.2 DLL的入口点函数533
20.2.1 DLL PROCESS ATTACH通知534
20.2.2 DLL PROCESS DETACH通知535
20.2.3 DLL THREAD ATTACH通知537
20.2.4 DLL THREAD DETACH通知538
20.2.5 DllMain的序列化调用538
20.2.6 DllMain和C/C++运行库541
20.3延迟载入DLL542
20.4函数转发器553
20.5已知的DLL553
20.6 DLL重定向555
20.7模块的基地址重定位556
20.8模块的绑定562
第21章 线程局部存储区565
21.1动态TLS566
21.2静态TLS570
第22章 DLL注入和API拦截572
22.1 DLL注入的一个例子573
22.2使用注册表来注入DLL575
22.3使用Windows挂钩来注入DLL576
22.4使用远程线程来注入DLL587
22.4.1 Inject Library示例程序591
22.4.2 Image Walk DLL596
22.5使用木马DLL来注入DLL598
22.6把DLL作为调试器来注入598
22.7使用CreateProcess来注入代码599
22.8 API拦截的一个例子599
22.8.1通过覆盖代码来拦截API600
22.8.2通过修改模块的导入段来拦截API601
22.8.3 Last MessageBox Info示例程序604
第Ⅴ部分 结构化异常处理621
第23章 终止处理程序621
第24章 异常处理程序与软件异常638
24.1通过实例理解异常过滤程序和异常处理程序638
24.1.1 Funcmeisterl函数639
24.1.2 Funcmeister2函数639
24.2 EXCEPTION EXECUTE HANDLER641
24.2.1一些有用的例子642
24.2.2全局展开645
24.2.3停止全局展开647
24.3 EXCEPTION CONTINUE EXECUTION648
24.4 EXCEPTION CONTINUE SEARCH650
24.5 GetExceptionCode652
24.6 GetExceptionInformation656
24.7软件异常659
第25章 未处理异常、向量化异常处理与C++异常663
25.1 UnhandledExceptionFilter函数详解665
25.2即时调试671
25.3电子表格示例程序673
25.4向量化异常和继续处理程序681
25.5 C++异常与结构化异常的比较683
25.6异常与调试器684
第26章 错误报告与应用程序恢复688
26.1 Windows错误报告控制台688
26.2可编程的Windows错误报告691
26.3对进程中所有的问题报告进行定制693
26.4问题报告的创建与定制694
26.4.1创建一个自定义的问题报告697
26.4.2设置报告参数:WerReportSetParameter698
26.4.3将小型转储文件放入报告:WerReportAddDump698
26.4.4将任意文件放入报告:WerReportAddFile699
26.4.5修改对话框文本:WerReport SetUIOption700
26.4.6提交错误报告:WerReportSubmit700
26.4.7 关闭问题报告:WerReportCloseHandle702
26.4.8 Customized WER示例程序702
26.5应用程序的自动重启与恢复708
26.5.1应用程序的自动重启708
26.5.2对应用程序恢复的支持709
第Ⅵ部分713
附录A 构建环境713
附录B 消息处理宏、子控件宏和API宏724
索引729
热门推荐
- 920287.html
- 904602.html
- 612363.html
- 297516.html
- 3430196.html
- 1291495.html
- 1231856.html
- 2493200.html
- 3114015.html
- 1891711.html
- http://www.ickdjs.cc/book_284618.html
- http://www.ickdjs.cc/book_1005039.html
- http://www.ickdjs.cc/book_769721.html
- http://www.ickdjs.cc/book_3489115.html
- http://www.ickdjs.cc/book_1442130.html
- http://www.ickdjs.cc/book_1888612.html
- http://www.ickdjs.cc/book_2549572.html
- http://www.ickdjs.cc/book_1488038.html
- http://www.ickdjs.cc/book_2227617.html
- http://www.ickdjs.cc/book_1594278.html