当前位置首页 > 百科> 正文

经典重读·Windows核心编程

2020-02-06 17:26:16 百科
经典重读·Windows核心编程

经典重读·Windows核心编程

《经典重读·Windows核心编程》是机械工业出版社2008年5月1日出版的图书。本书是讲解Windows作业系统内部机制的一本专着。

基本介绍

  • 书名:经典重读·Windows核心编程
  • 作者:理察
  • 译者:黄陇 李虎
  • ISBN:7111237919, 9787111237914
  • 页数:728页
  • 出版社:机械工业出版社; 
  • 出版时间:2008年5月1日
  • 尺寸:23.6 x 18.4 x 3.8 cm
  • 重量:1 Kg

作者简介

作者:(美)理察 译者:黄陇 李虎
Jeffrey Richter,是一位在全球享有盛誉的技术作家,尤其在Windows/.NET领域有着杰出的贡献。他的第一本Windows着作《Windows 95:A Developer'S Guide》大获好评,从而声名远扬。之后,他又推出了经典着作《Windows高级编程指南》和dWindows核心编程》。如今这两本书早已成为Windows程式设计领域的经典之作,培育了几代软体开发设计人员。Jeffrey是WinteIIect公司的创始人之一,也是MSDN杂誌.NET专栏的特邀编辑。他对Windows思想的领悟、对Windows细节的熟稔,是其他任何作家难以企及的。他是Windows技术作家中当之无愧的一面旗帜。

内容简介

作者从基本概念入手,全面系统地介绍了Windows底层实现机制、Windows应用程式的基本构件(包括进程、执行绪、记忆体管理、动态程式库、执行绪本地存储和Unicode)以及各类Windows API等,并列举了大量应用程式示例,精闢地分析了Windows编程的各个难点和要点,为掌握windows编程技巧提供了一条有效的捷径。《经典重读?Windows核心编程(原书第4版)》适合Windows编程人员参考。

目录

译者序
前言
作译者简介
第一部分 程式设计师必读
第1章 错误处理
1.1 自定义错误处理的实现
1.2 错误显示例程
第2章 Unicode
2.1 字元集
2.1.1 单位元组和双位元组字元集
2.1.2 Unicode:宽位元组字元集
2.2 为何需要Unicode
2.3 Windows 2000和Unicode
2.4 Windows 98和Unicode
2.5 Windows CE和Unicode
2.6 评论
2.7 关于COM
2.8 如何编写Unicode原始码
2.8.1 C运行库的Unicode支持
2.8.2 Windows定义的Unicode数据类型
2.8.3 Windows系统中的Unicode函式和ANSI函式
2.8.4 Windows字元串函式
2.9 让应用程式符合ANSI和Unicode规範
2.9.1 Windows字元串函式
2.9.2 资源
2.9.3 确定文本是ANSI型还是Unicode型
2.9.4 在Unicode和ANSI间转换字元串
第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 複製对象句柄
第二部分 完成编程任务
第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 枚举系统中运行的进程
第5章 作业
5.1 对作业进程的限制
5.2 把进程放入作业
5.3 终止作业中所有进程的运行
5.4 查询作业统计信息
5.5 作业通知信息
5.6 JobLab示例应用程式
第6章 执行绪的基本知识
6.1 创建执行绪的时机
6.2 何时不能创建执行绪
6.3 编写第一个执行绪函式
6.4 CreateThread函式
6.4.1 psa
6.4.2 cbStack
6.4.3 pfnStartAddr和pvParam
6.4.4 fdwCreate
6.4.5 pdwThreadID
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 Oops-错误地调用了CreateThread
6.7.2 不该调用的C/C++运行时库函式
6.8 执行绪的身份标识
第7章 执行绪的调度、优先权和亲缘性
7.1 挂起和恢複线程的运行
7.2 进程的挂起和唤醒
7.3 睡眠
7.4 执行绪切换
7.5 执行绪的运行时间
7.6 上下文环境切换
7.7 执行绪优先权
7.8 优先权的抽象说明
7.9 编程优先权
7.9.1 动态提高执行绪的优先权等级
7.9.2 为前台进程调整调度程式
7.9.3 Scheduling Lab示例应用程式
7.10 亲缘性
第8章 用户模式下的执行绪同步
8.1 原子访问:互锁函式族
8.2 高速快取行
8.3 高级执行绪同步
8.4 临界区
8.4.1 临界区準确的描述
8.4.2 临界区与循环锁
8.4.3 临界区与错误处理
8.4.4 有用的提示和技巧
第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
第10章 执行绪同步工具包
10.1 临界区的实现:Optex
10.2 创建执行绪安全的数据类型和反信号量
10.3 单写入多读出程式的保护
10.4 WaitForMultipleExpressions函式的实现
第11章 执行绪池
11.1 场景1:异步调用函式
11.2 场景2:按规定的时间间隔调用函式
11.3 场景3:在某个核心对象变为已通知状态时调用函式
11.4 场景4:异步I/O请求运行完成时调用函式
第12章 纤程
12.1 使用纤程
12.2 Counter示例应用程式
第三部分 记忆体管理
第13章 Windows记忆体结构
13.1 进程的虚拟地址空间
13.2 虚拟地址空间分区
13.2.1 无效断点分配分区(适于Windows 2000和Windows 98)
13.2.2 MS-DOS/16位Windows应用程式兼容分区(仅适于Windows 98)
13.2.3 用户模式分区(适用Windows 2000和Windows 98)
13.2.4 64KB禁止进入分区(仅适用于Windows 2000)
13.2.5 共享的MMF分区(仅适用于Windows 98)
13.2.6 核心模式分区(使用于Windows 2000和Windows 98)
13.3 地址空间区域
13.4 在地址空间区域中提交物理存储器
13.5 物理存储器和页面档案
13.6 保护属性
13.6.1 Copy-On-Write访问
13.6.2 特殊访问保护属性标誌
13.7 综合使用所有元素
13.7.1 区域的内部详情
13.7.2 Windows 98上地址空间的差异
13.8 数据对齐的重要性
第14章 虚拟记忆体
14.1 系统信息
14.2 虚拟记忆体的状态
14.3 确定地址空间状态
14.3.1 VMQery函式
14.3.2 虚拟记忆体表应用程式示例
第15章 应用程式中虚拟记忆体的使用
15.1 地址空间中保留区域
15.2 在保留区域中提交存储器
15.3 同时进行保留区域并提交记忆体
15.4 何时提交物理存储器
15.5 物理存储器的回收和地址空间区域的释放
15.5.1 何时回收物理存储器
15.5.2 虚拟记忆体分配示例应用程式
15.6 改变保护属性
15.7 清除物理存储器内容
15.8 地址视窗扩展(仅使用于Windows 2000)
第16章 执行绪栈
16.1 Windows 98下的执行绪栈
16.2 C/C++运行时库中的栈检测函式
16.3 Summation示例应用程式
第17章 记忆体映射档案
17.1 记忆体映射的执行档和DLL档案
17.1.1 执行档或DLL的多个实例之间无法共享的静态数据
17.1.2 在执行档或DLL的多个实例之间共享静态数据
17.1.3 AppInst示例应用程式
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.3.6 档案倒序示例应用程式
17.4 使用记忆体映射档案处理大档案
17.5 记忆体映射档案的一致性
17.6 设定记忆体映射档案的基地址
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 DLL的总体运行情况
19.3 创建DLL模组
19.3.1 导出的真正含义
19.3.2 使用非Visual C++工具创建DLL
19.4 创建可执行模组
19.5 运行可执行模组
第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 静态TLS
第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 在Windows 98平台上使用记忆体映射档案注入代码
22.8 使用CreateProcess来注入代码
22.9 API挂接:一个例子
22.9.1 通过覆写代码实现API挂接
22.9.2 通过操作模组的导入部分来实现API挂接
22.9.3 LastMsgBoxInfo示例应用程式
第五部分 结构化异常处理
第23章 终止处理例程
23.1 Funcenstein1
23.2 Funcenstein2
23.3 Funcenstein3
23.4 Funcfurter1
23.5 小测验:FuncaDoodleDoo
23.6 Funcenstein4
23.7 Funcarama1
23.8 Funcarama2
23.9 Funcarama3
23.10 Funcarama4:最终的边界
23.11 有关finally块的说明
23.12 Funcfurter2
23.13 SEH终止示例应用程式
第24章 异常处理程式和软体异常
24.1 通过例子理解异常过滤器和异常处理程式
24.1.1 Funcmeister1
24.1.2 Funcmeister2
24.2 EXCEPTION_EXECUTE_HANDLER
24.2.1 一些有用的例子
24.2.2 全局展开
24.2.3 暂停全局展开
24.3 EXCEPTION_CONTINUE_EXECUTION
24.4 EXCEPTION_CONTINUE_SEARCH
24.5 GetExceptionCode
24.5.1 与记忆体相关的异常
24.5.2 与异常相关的异常
24.5.3 与调试相关的异常
24.5.4 与整数相关的异常
24.5.5 与浮点数相关的异常
24.6 GetExceptionInformation
24.7 软体异常
第25章 未处理异常和C++异常
25.1 即时调试
25.2 关闭异常讯息框
25.2.1 强制进程终止运行
25.2.2 包装一个执行绪函式
25.2.3 包装所有的执行绪函式
25.2.4 自动调用调试器
25.3 自己调用UnhandledExceptionFilter
25.4 UnhandledExceptionFilter函式的内部细节
25.5 异常和调试程式
25.6 C++异常与结构化异常比较
第六部分 视窗
第26章 视窗讯息
26.1 执行绪的讯息伫列
26.2 将讯息投送到一个执行绪的讯息伫列中
26.3 向视窗传送讯息
26.4 唤醒一个执行绪
26.4.1 伫列状态标誌
26.4.2 从执行绪伫列中提取讯息的算法
26.4.3 使用核心对象或者伫列状态标誌来唤醒一个执行绪
26.5 使用讯息传送数据
26.6 Windows处理ANSI/Unicode字元和字元串的方法
第27章 硬体输入模型与本地输入状态
27.1 原始输入执行绪
27.2 本地输入状态
27.2.1 键盘输入和焦点
27.2.2 滑鼠游标管理
27.3 将虚拟输入伫列和本地输入状态相关联
27.3.1 LISLab示例应用程式
27.3.2 LISWatch示例应用程式
附录
附录A 构建环境
附录B 讯息解析器、子控制项宏以及API宏
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net