首页编程windows核心编程(windows核心编程第五版pdf)

windows核心编程(windows核心编程第五版pdf)

编程之家2026-06-021141次浏览

老铁们,大家好,相信还有很多朋友对于windows核心编程和windows核心编程第五版pdf的相关问题不太懂,没关系,今天就由我来为大家分享分享windows核心编程以及windows核心编程第五版pdf的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

windows核心编程(windows核心编程第五版pdf)

学windows核心编程需要什么基础

要在windows平台发展,首先要对标准C++有深入了解。MFC等库中各种虚函数、框架等等都是建立在此基础上的,建议看看《C++ Primer》

要想看懂《windows核心编程》,首先要对VC++有一定的了解,了解它的工作原理。建议看看《Windows程序设计(第五版)》,这本书虽然比较早,里面的一些知识可能已经淘汰,但这本书被称作Windows编程圣经,里面讲解的Windows程序原理至今依然适用。其次,还要对windows的操作系统本身有一定了解,建议看看操作系统原理。

linux和windows这2者之间有很大不同,从操作系统上就有很大差异,而且linux下更喜欢用C编程,windows的话就比较喜欢C++,看《windows核心编程》就可以看出来了。

如果要看linux方面可以看这里,也是我写的,就不粘过来了:

Windows 核心编程的目录

第1部分必备知识

windows核心编程(windows核心编程第五版pdf)

第1章错误处理

1.1定义自己的错误代码

1.2 ErrorShow示例程序

第2章字符和字符串处理

2.1字符编码

2.2 ANSI字符和Unicode字符与字符串数据类型

windows核心编程(windows核心编程第五版pdf)

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宏

索引

如何学好《windows核心编程》

很多人从MFC开始学习,结果常常是一头雾水,知难而退;也有人毅力坚强,熬过了MFC的阵痛期,最后却是知其然而不知其所以然,并且思维被限制在MFC的框架之中,遇到稍微有点规模的程序就无从下手了。\x0d\x0a以我个人的这些年的Windows开发经历,我建议Windows上的学习路线如下:\x0d\x0a首先当然是语言的学习,比如C或C++(STL),它是平台无关的\x0d\x0a然后可以从《Windows程序设计》(by\x0d\x0aCharlesPetzold\x0d\x0a)入门,从最原始的WindowsAPI开始学习\x0d\x0a接下来可以学习《Windows核心编程》(by\x0d\x0aJeffreyRichter\x0d\x0a),它会让你比较深刻的理解Windows的前台和后台机制\x0d\x0a学完上面2本书,对Windows系统已经比较熟悉了,再要深入的话可以学下《Windows图形编程》(by袁锋)。\x0d\x0a至此,已经可以用API的方式开发大部分Windows应用程序了,\x0d\x0a接下来可以学一些常用库,比如MFC,WTL,ATL等,此时学习MFC和一开始就学习MFC已是截然不同的感觉,彼时痛苦难熬,此时会心一笑。\x0d\x0a其他就是根据项目需要,专业知识的学习,比如COM技术,网络,D3D等。

好了,关于windows核心编程和windows核心编程第五版pdf的问题到这里结束啦,希望可以解决您的问题哈!

java软件开发工具 java洛克王国性格大全?洛克王国性格加成多少