图书介绍

Windows核心编程PDF|Epub|txt|kindle电子书版本网盘下载

Windows核心编程
  • (美)理查德(Richter,J.)著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111237919
  • 出版时间:2008
  • 标注页数:728页
  • 文件大小:172MB
  • 文件页数:746页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Windows核心编程PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 错误处理1

自定义错误处理的实现4

错误显示例程5

第2章Unicode11

字符集11

单字节和双字节字符集11

Unicode:宽字节字符集12

为何需要Unicode13

Windows 2000和Unicode13

Windows 98和Unicode13

Windows CE和Unicode14

评论14

关于COM15

如何编写Unicode源代码15

C运行库的Unicode支持15

Windows定义的Unicode数据类型17

Windows系统中的Unicode函数和ANSI函数17

Windows字符串函数19

让应用程序符合ANSI和Unicode规范19

Windows字符串函数20

资源22

确定文本是ANSI型还是Unicode型22

在Unicode和ANSI间转换字符串24

第3章 内核对象27

内核对象的概念27

使用计数27

安全性28

内核对象句柄表30

创建内核对象30

关闭内核对象32

进程间内核对象的共享32

对象句柄的继承性33

改变句柄标志35

命名对象36

终端服务器命名空间40

复制对象句柄40

第4章 进程45

编写第一个Windows应用程序46

进程的实例句柄49

进程的前一个实例句柄50

进程的命令行51

进程的环境变量52

亲缘性55

进程的错误模式55

当前驱动器和目录55

当前目录56

系统版本57

CreateProcess函数60

pszApplicationName和pszCommandLine60

psaProcess、 psaThread和 bInheritHandles62

fdwCreate64

pvEnvironment65

pszCurDir66

psiStartInfo66

ppiProcInfo69

进程的终止70

主线程的入口函数返回71

ExitProcess函数71

TerminateProcess函数72

进程中所有线程的运行终止73

进程的运行终止73

子进程74

枚举系统中运行的进程76

第5章 作业94

对作业进程的限制96

把进程放入作业102

终止作业中所有进程的运行103

查询作业统计信息103

作业通知信息106

JobLab示例应用程序108

第6章 线程的基本知识126

创建线程的时机126

何时不能创建线程127

编写第一个线程函数128

CreateThread函数129

psa130

cbStack130

pfnStartAddr和pvParam130

fdwCreate131

pdwThreadID132

终止线程132

线程函数返回132

ExitThread函数133

TerminateThread函数133

在进程终止运行时终止线程134

线程终止运行时发生的操作134

线程的一些内部细节134

对于C/C++运行时库的考虑137

Oops——错误地调用了CreateThread144

不该调用的C/C++运行时库函数145

线程的身份标识145

第7章 线程的调度、优先级和亲缘性149

挂起和恢复线程的运行150

进程的挂起和唤醒151

睡眠152

线程切换153

线程的运行时间153

上下文环境切换156

线程优先级160

优先级的抽象说明161

编程优先级164

动态提高线程的优先级等级166

为前台进程调整调度程序167

SchedulingLab示例应用程序168

亲缘性176

第8章 用户模式下的线程同步181

原子访问:互锁函数族181

高速缓存行186

高级线程同步188

临界区190

临界区准确的描述192

临界区与循环锁195

临界区与错误处理195

有用的提示和技巧196

第9章 线程与内核对象的同步200

等待函数201

成功等待的副作用204

事件内核对象205

等待定时器内核对象215

用等待定时器给APC项排队218

定时器的松散特性220

信号量内核对象220

互斥内核对象222

释放问题223

互斥对象与临界区的比较224

Queue应用程序示例225

线程同步对象表234

其他线程同步函数235

异步设备I/O 235

waitForInputIdle 235

MsgWaitForMultipleObjects(Ex)236

WaitForDebugEvent236

SignalobjectAndWait237

第10章 线程同步工具包239

临界区的实现:Optex 239

创建线程安全的数据类型和反信号量251

单写入多读出程序的保护263

WaitForMultipleExpressions函数 的实现272

第11章 线程池288

场景1:异步调用函数289

场景2:按规定的时间间隔调用函数291

场景3:在某个内核对象变为已通知状态时调用函数297

场景4:异步I/O请求运行完成时调用函数299

第12章 纤程301

使用纤程301

Counter示例应用程序303

第13章Windows内存结构313

进程的虚拟地址空间313

虚拟地址空间分区313

无效断点分配分区(适于Windows 2000和Windows 98)314

MS-DOS/16位Windows应用程序兼容分区(仅适于Windows 98) 315

用户模式分区(适用Windows 2000和Windows 98)315

64KB禁止进入分区(仅适用于Windows 2000)316

共享的MMF分区(仅适用于Windows 98)317

内核模式分区(使用于Windows 2000和Windows 98)317

地址空间区域317

在地址空间区域中提交物理存储器318

物理存储器和页面文件319

保护属性321

Copy-On-write访问322

特殊访问保护属性标志323

综合使用所有元素323

区域的内部详情326

Windows 98上地址空间的差异330

数据对齐的重要性333

第14章 虚拟内存338

系统信息338

虚拟内存的状态346

确定地址空间状态352

VMQery函数353

虚拟内存表应用程序示例360

第15章 应用程序中虚拟内存的使用371

地址空间中保留区域371

在保留区域中提交存储器373

同时进行保留区域并提交内存373

何时提交物理存储器374

物理存储器的回收和地址空间区域的释放375

何时回收物理存储器376

虚拟内存分配示例应用程序377

改变保护属性386

清除物理存储器内容387

地址窗口扩展(仅使用于Windows 2000)390

第16章 线程栈404

Windows 98下的线程栈406

C/C++运行时库中的栈检测函数408

Summation示例应用程序409

第17章 内存映射文件416

内存映射的可执行文件和DLL文件416

可执行文件或DLL的多个实例之间无法共享的静态数据417

在可执行文件或DLL的多个实例之间共享静态数据419

AppInst示例应用程序424

内存映射数据文件429

方法1:一个文件,一个缓存429

方法2:两个文件,一个缓存429

方法3:一个文件,两个缓存430

方法4:一个文件,零个缓存430

使用内存映射文件430

步骤1:创建或打开文件内核对象431

步骤2:创建文件映射内核对象432

步骤3:将文件数据映射到进程地址空间434

步骤4:进程地址空间中撤销文件数据的映像437

步骤5和步骤6:关闭文件映射对象和文件对象438

文件倒序示例应用程序439

使用内存映射文件处理大文件447

内存映射文件的一致性448

设定内存映射文件的基地址449

实现内存映射文件的具体细节450

使用内存映射文件在进程之间实现数据共享452

受页面文件支持的内存映射文件452

稀疏提交的内存映射文件459

第18章堆473

进程的默认堆473

创建辅助堆的原因474

保护组件474

更有效地管理内存475

进行本地访问475

减少线程同步开销475

快速释放475

创建辅助堆的方法476

分配堆中的内存块477

改变内存块的大小478

获取内存块的大小479

释放内存块479

销毁堆479

用C++程序使用堆479

其他堆函数482

第19章DLL基础485

DLL与进程的地址空间486

DLL的总体运行情况487

创建DLL模块490

导出的真正含义492

使用非Visual C++工具创建DLL 493

创建可执行模块494

运行可执行模块497

第20章DLL高级技术499

显式加载DLL模块和符号链接499

显式加载DLL模块499

显式卸载DLL模块501

显式链接到导出符号503

DLL的入口函数504

DLL-PROCESS-ATTACH通知505

DLL-PROCESS-DETACH通知506

DLL-THREAD-ATTACH通知508

DLL-THREAD-DETACH通知509

顺序调用DllMain 509

D11Main和C/C++运行时库512

延迟加载DLL513

函数转发器523

已知的DLL523

DLL重定向525

模块的基址重置525

绑定模块531

第21章 线程本地存储533

动态TLS533

静态TLS537

第22章DLL注入以及API挂接539

DLL注入:一个例子539

使用注册表注入DLL541

使用Windows钩子注入DLL542

使用远程线程注入DLL555

Inject Library示例应用程序559

Image Walk DLL567

使用特洛伊DLL注入DLL 570

将DLL作为调试程序注入570

在Windows 98平台上使用内存映射文件注入代码570

使用CreateProcess来注入代码571

API挂接:一个例子571

通过覆写代码实现API挂接572

通过操作模块的导入部分来实现API挂接573

LastMsgBoxInfo示例应用程序576

第23章 终止处理例程593

Funcensteinl594

Funcenstein2595

Funcenstein3596

Funcfurterl597

小测验:FuncaDoodleDoo598

Funcenstein4599

Funcaramal600

Funcarama2600

Funcarama3601

Funcarama4:最终的边界602

有关finally块的说明603

Funcfurter2604

SEH终止示例应用程序605

第24章 异常处理程序和软件异常608

通过例子理解异常过滤器和异常处理程序608

Funcmeisterl608

Funcmeister2609

EXCEPTION-EXECUTE-HANDLER611

一些有用的例子611

全局展开614

暂停全局展开616

EXCEPTION-CONTINUE-EXECUTION617

EXCEPTION-CONTINUE SEARCH619

GetExceptionCode621

与内存相关的异常621

与异常相关的异常622

与调试相关的异常622

与整数相关的异常622

与浮点数相关的异常622

GetExceptionInformation624

软件异常628

第25章 未处理异常和C++异常631

即时调试633

关闭异常消息框634

强制进程终止运行634

包装一个线程函数634

包装所有的线程函数635

自动调用调试器635

自己调用UnhandledExceptionFilter636

UnhandledExceptionFilter函数的 内部细节636

异常和调试程序638

C++异常与结构化异常比较652

第26章 窗口消息657

线程的消息队列657

将消息投送到一个线程的消息队列中658

向窗口发送消息660

唤醒一个线程664

队列状态标志665

从线程队列中提取消息的算法666

使用内核对象或者队列状态标志来唤醒一个线程669

使用消息发送数据671

Windows处理ANSI/Unicode字符和字符串的方法678

第27章 硬件输入模型与本地输入状态681

原始输入线程681

本地输入状态682

键盘输入和焦点683

鼠标光标管理686

将虚拟输入队列和本地输入状态相关联687

LISLab示例应用程序689

LISWatch示例应用程序704

附录A构建环境713

附录B消息解析器、子控件宏以及API宏725

热门推荐