内容简介
第一章 基础知识
1.1 保护模式概述
1.1.1 保护模式的渊源
1.1.2 什么是保护模式
1.2 分段机制和段描述符表
1.3 段页式寻址机制
1.4 保护模式下的异常
1.5 保护模式下的寄存器和新增指令集
1.6 介绍Soft -ICE for Windows
2.1 Windows 可执行文件首部的格式
第2章 Windows 内核数据结构
2.1.1 MS-ODS文件头
2.1.2 MS-Windows 文件头
2.1.3 Windows 代码段中的重定位信息
2.1.4 Windows 可执行文件实例剖析
2.2 Windows 的模块表
2.2.1 模块表
2.2.2 Windows 模块表实例剖析——DERNEL的模块表
2.3 Windows 的默认数据段
2.4 Windows 的任务数据库(TDB)
2.4.1 任务数据库TDB
2.4.2 任务数据库实例剖析——progman 的TDB
2.5 END 结构及INTWNDCLASS结构
2.4.3 PSP与 PDB
2.6 Windows中的重表——THHOOK
第3章 Windows内核引导过程
3.1 Windows启动过程的回顾
3.2 DERNEL 初始化过程概述
3.3 DRNL386 EXE的STUB程序
3.4 DRNL386 的STUB程序清单
3.5 BOOTSTRAP的执行过程
3.5.1 BOOTSTRAP1的执行过程
3.5.2 BOOTSTRAP2的执行过程
3.5.3 初始分全局堆——GlobalInit()
3.6 BOOTSTRAP源程序清单精选
3.5.4 创建模块表
第4章 Windows 的启动和终止
4.1 Windows 内核初始化的流程
4.1.1 Windows 内核初始化的实现流程
4.1.2 程序段0117:DI182 -DI19F
4.1.3 程序段0117:DIAB-D212
4.1.4 Windows 怎样满足同时打开很多文件的需要?
4.1.5 0117:D2CB-D·E6程序段
4.1.6 0117:D764-D769程序段
4.2 Windows 内核初始化程序清单
4.3 退出Windows 内核的过程
4.3.1 ExitWindows()例程
4.3.2 ExitKernel()例程
5.1 Windows 内存管理概述
第5章 Windows 内存管理机制
5.2 内存管理中的数据结构
5.2.1 ButgerMaater段
5.2.2 全局堆信息与全局场
5.2.3 局部堆与局部场
5.3 全局堆中内存埠的组织形式
5.3.1 空闲链表
5.3.2 LRU链表
5.4 全局内存分配标记的含义
5.5 Windows 的内存管理函数
5.5.1 全局堆内存管理函数
5.5.2 局部堆与局部场
5.6 GlobalAlloe()
5.6.1 CheckAllocValidty()
5.6.2 SubCheckAllocValidty()
5.6.3 SubGAlloc()
5.6.4 AllocMemory()
5.6.5 FindFreeLow ()
5.6.6 AllocFreeLow()
5.6.7 MoveBlockNearBy()
5.6.8 CheckBlockNearBy()
5.6.9 MoveFreeLow()
5.6.10 StorageBackward()
2.6.11 MarkSwapPgge()
5.6.12 CheckFreeBorder()
5.6.13 ModiGlobalArena()
5.6.14 IsertIdleLink()
5.6.15 Sublnsert()
5.6.16 BreakIdleLink()
5.6.17 UnifyFreeBlock()
5.6.18 GrowHeap()
5.6.19 GetDPMIInfo()
5.6.20FreeDPMIBlock()
5.6.21 UnkinkWin386 Blick()
第6章 Windows模导体装载机制
6.1 模块的基本概念
6.2 实例和任务的概念
6.3 模块装载函数——Load Mldule()
6.4.1 检测指定模块是否已经装入内存的函数——CheckLoadingModule()
6.4 模块装载函数的重要辅助例程
6.4.2 为已装入模块创建新实例的函数——CreateNewInstance()
6.4.3 文件打开函数——OpenModuleFile()
6.4.4 模块表创建函数——CreateMDB()
6.4.5 模块标记检测函数——CheckModuleFlag()
6.4.6 TDB和DLL引用链表段的段的创建函数——CreaetTask()
6.4.7 任务数据库人创建函数——CreateTDB()
6.4.8 任务模块PDB的初始化函数——InitPDB()
6.4.9 模块内存分配函数——DoMlduleAlloc()
6.4.10段内存分配函数——AollocMlduleSeg()
6.4.11 引用DLL的装入函数——LoadImportDll()
6.4.12 段装载函数——LoadModuleSeg()
6.4.13 运行已装载模块的函数——RunNew Module()
6.4.14 模块初始化函数——InitModule()
6.4.15 库模块的初始化函数——InityDllModule()
6.4.16 应用程序模块的初始化函数——InitAppModule()
6.4.17 任务启动函数——StatNewTask()
6.5 段的装载
6.5.1 段装载函数——LoadSegment()
6.5.2 内存分配函数——FarMyAlloc()
6.5.3 段数据复制函数——CopySeg()
6.5.4 重复段创建函数——CreateIteratedSeg()
6.4.5 前序代码修改函数——PatchCodeHandle()
6.6 被装载模块的重定痊
6.6.1 System.drv中段选择符的重定位
6.6.2 Keyboard.drv中函数指针(段:偏移)的重定位
6.6.3 System.drv中函数指针(段:偏移)的重定位
6.6.4 System.drv中常量函数的重定位
6.7 缓存文件句柄对照表
6.8 模块的卸载过程
6.8.1 模块函数——DeleteModule()
6.9 自装载Windows的应用程序
6.9.1 为什么要引入自装载问题
6.9.2 如何创建一个自装载程序
6.9.3 装载函数
6.9.4 段重载函数——LoadAppSeg()
6.9.6 内存分配函数——MyAlloc()
6.9.5 硬件复位函数——EXITPROC()
6.9.7 所有者设置函数——SetOwner()
6.9.8 入口点获取函数——EntryAddrProc()
第7章 Windows任务的启动和关闭
7.1 Windows任务的启动代码
7.2 Windows中任务的启动
7.2.1 任务初始化函数Ⅰ——InitTask
7.2.2 任务启动函数 Ⅱ——WaitEvent
7.2.3 任务启动函数Ⅲ——InitApp()
7.2.4 TSR装载程序——LoadTSRApp()
7.4 Windows中任务的终止
7.4.1 任务终止函数——ExitTask()
7.3 任务的入口函数——WinMain()
第8章 Windows动态链接机制
8.1 动态链接机制
8.1.1 动态链接机制
8.1.2 动态链接库与应用程序的比较
8.1.3 动态链接与静态链接的比较
8.1.4 动态链接库的实例剖析
8.2 动态链接库的启动代码
8.3 动态链接库函数
8.3.1 库装载和卸载函数
8.3.2 库的初始化函数
8.3.3 库中引出函数入口点的获取函数
8.3.4 库清理函数 WEP()
8.4.1 IncExeUsage()
8.4 动态链接库引用次数的设置
8.4.2 DecExeUsage()
8.5 Windows的前置代码(Ptologs)和后续代码(Epilogs)
8.5.1 概述
8.5.2 应用程序的前置代码和后续代码
8.5.3 应用程序的灵巧回调(Smart CallBack)
8.5.4 DLL的前置代码和后续代码
8.5.5 实模式下的前置代码
8.5.6 保护蕈式下的前置代码
8.5.7 过程实例块的创建和释放函数
9.1 多任务机制
9.2 抢先式调度策略
第9章 Windows任务调度机制
9.3 非抢先式调度策略
9.3.1 事件
9.3.2 优先级
9.3.3 控制权的释放
9.4 源程序说明
9.4.1 WaitEvent()
9.4.2 Directedyield()
9.4.3 Yield()
9.4.4 UserYield()
9.4.5 OldYcild()
9.4.6 PostEvent()
9.4.7 SetPriority()
9.4.8 ReSchedule()
第10章 Windows消息驱动机制
10.1 Windows的消息结构
10.2 Windows的任务队列
10.3 Windows的系统队列
10.4 消息队列的创建
10.4.1 系统队列的创建——CreateSystemQueue
10.4.2 任务队列的创建——CreateTaskQueue
10.4.3 消息队列的创建——CreateQueue
10.5 Windows的消息类型
10.5.1 键盘消息——Qs_Key
10.5.2 鼠标消息——Qs_Mouse
10.5.3 时钟消息——Qs_Timer
10.5.4 屏幕重绘消息——Qs_Paint
10.5.5 传送消息——Qs_PoatMsg
10.5.6 发送消息——Qs_SendMsg
10.6 Windows的消息值
10.7 Windows的消息函数
10.7.1 消息标记获取函数
10.7.2 消息发送函数1
10.7.3 消息应答函数
10.7.4 消息获取函数
10.7.5 消息传递函数
10.7.6 消息发送函数2
附录DPMI功能调用
参考文献