Windows核心编程

Windows核心编程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] , ,
2008-05
版次: 1
ISBN: 9787111237914
定价: 99.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 728页
正文语种: 简体中文
80人买过
  •   本书是讲解Windows操作系统内部机制的一本专著。作者从基本概念入手,全面系统地介绍了Windows底层实现机制、Windows应用程序的基本构件(包括进程、线程、内存管理、动态链接库、线程本地存储和Unicode)以及各类WindowsAPI等,并列举了大量应用程序示例,精辟地分析了Windows编程的各个难点和要点,为掌握Windows编程技巧提供了一条有效的捷径。
      本书适合Windows编程人员参考。
      作者简介:
      JeffreyRichter,是一位在全球享有盛誉的技术作家,尤其在Windows/.NET领域有着杰出的贡献。他的第一本Windows著作《Windows95:ADeveloperSGuide》大获好评,从而声名远扬。之后,他又推出了经典著作《Windows高级编程指南》和dWindows核心编程》。如今这两本书早已成为Windows程序设计领域的经典之作,培育了几代软件开发设计人员。Jeffrey是WinteIIect公司的创始人之一,也是MSDN杂志.NET专栏的特邀编辑。他对Windows思想的领悟、对Windows细节的熟稔,是其他任何作家难以企及的。他是Windows技术作家中当之无愧的一面旗帜。 Jeffrey Richter全球享有盛誉的微软技术专家,著名技术咨询和培训公司Wintellect创始人之一,MSDN Magazine杂志特邀编辑.多年来,他担任微软各开发团队顾问,参与了微软的许多关键产品包括各版本Windows.VisualcStudio.Microsoft Office和NET框架的设计和编程.他撰写了一系列著作,包括本书和《深入理解.NET》(第2版·英文版,人民邮电出版社,2008),都堪称技术图书的典范,1影响了一代Windows程序员,并因此荣获微软公司社区最高技术荣誉“微软软件传奇人物”(Software Legend)称号.
    Christophe Nasarrec知名技术专家,MSDN Magazine杂志专栏作者.目前在著名商业智能公司BusinessObjects任开发经理,负责开发桌面和基于Web的商业智能解决方案.他擅长Windows和.NET底层开发,曾经编写过许多著名的底层工具. 译者序
    前言
    作译者简介
    第一部分程序员必读
    第1章错误处理
    1.1自定义错误处理的实现
    1.2错误显示例程
    第2章Unicode
    2.1字符集
    2.1.1单字节和双字节字符集
    2.1.2Unicode:宽字节字符集
    2.2为何需要Unicode
    2.3Windows2000和Unicode
    2.4Windows98和Unicode
    2.5WindowsCE和Unicode
    2.6评论
    2.7关于COM
    2.8如何编写Unicode源代码
    2.8.1C运行库的Unicode支持
    2.8.2Windows定义的Unicode数据类型
    2.8.3Windows系统中的Unicode函数和ANSI函数
    2.8.4Windows字符串函数
    2.9让应用程序符合ANSI和Unicode规范
    2.9.1Windows字符串函数
    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.2CreateProcess函数
    4.2.1pszApplicationName和pszCommandLine
    4.2.2psaProcess、psaThread和bInheritHandles
    4.2.3fdwCreate
    4.2.4pvEnvironment
    4.2.5pszCurDir
    4.2.6psiStartInfo
    4.2.7ppiProcInfo
    4.3进程的终止
    4.3.1主线程的入口函数返回
    4.3.2ExitProcess函数
    4.3.3TerminateProcess函数
    4.3.4进程中所有线程的运行终止
    4.3.5进程的运行终止
    4.4子进程
    4.5枚举系统中运行的进程
    第5章作业
    5.1对作业进程的限制
    5.2把进程放入作业
    5.3终止作业中所有进程的运行
    5.4查询作业统计信息
    5.5作业通知信息
    5.6JobLab示例应用程序
    第6章线程的基本知识
    6.1创建线程的时机
    6.2何时不能创建线程
    6.3编写第一个线程函数
    6.4CreateThread函数
    6.4.1psa
    6.4.2cbStack
    6.4.3pfnStartAddr和pvParam
    6.4.4fdwCreate
    6.4.5pdwThreadID
    6.5终止线程
    6.5.1线程函数返回
    6.5.2ExitThread函数
    6.5.3TerminateThread函数
    6.5.4在进程终止运行时终止线程
    6.5.5线程终止运行时发生的操作
    6.6线程的一些内部细节
    6.7对于C/C++运行时库的考虑
    6.7.1Oops—错误地调用了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.3SchedulingLab示例应用程序
    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.3Queue应用程序示例
    9.7线程同步对象表
    9.8其他线程同步函数
    9.8.1异步设备I/O
    9.8.2WaitForInputIdle
    9.8.3MsgWaitForMultipleObjects(Ex)
    9.8.4WaitForDebugEvent
    9.8.5SignalObjectAndWait
    第10章线程同步工具包
    10.1临界区的实现:Optex
    10.2创建线程安全的数据类型和反信号量
    10.3单写入多读出程序的保护
    10.4WaitForMultipleExpressions函数的实现
    第11章线程池
    11.1场景1:异步调用函数
    11.2场景2:按规定的时间间隔调用函数
    11.3场景3:在某个内核对象变为已通知状态时调用函数
    11.4场景4:异步I/O请求运行完成时调用函数
    第12章纤程
    12.1使用纤程
    12.2Counter示例应用程序
    第三部分内存管理
    第13章Windows内存结构
    13.1进程的虚拟地址空间
    13.2虚拟地址空间分区
    13.2.1无效断点分配分区(适于Windows2000和Windows98)
    13.2.2MS-DOS/16位Windows应用程序兼容分区(仅适于Windows98)
    13.2.3用户模式分区(适用Windows2000和Windows98)
    13.2.464KB禁止进入分区(仅适用于Windows2000)
    13.2.5共享的MMF分区(仅适用于Windows98)
    13.2.6内核模式分区(使用于Windows2000和Windows98)
    13.3地址空间区域
    13.4在地址空间区域中提交物理存储器
    13.5物理存储器和页面文件
    13.6保护属性
    13.6.1Copy-On-Write访问
    13.6.2特殊访问保护属性标志
    13.7综合使用所有元素
    13.7.1区域的内部详情
    13.7.2Windows98上地址空间的差异
    13.8数据对齐的重要性
    第14章虚拟内存
    14.1系统信息
    14.2虚拟内存的状态
    14.3确定地址空间状态
    14.3.1VMQery函数
    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地址窗口扩展(仅使用于Windows2000)
    第16章线程栈
    16.1Windows98下的线程栈
    16.2C/C++运行时库中的栈检测函数
    16.3Summation示例应用程序
    第17章内存映射文件
    17.1内存映射的可执行文件和DLL文件
    17.1.1可执行文件或DLL的多个实例之间无法共享的静态数据
    17.1.2在可执行文件或DLL的多个实例之间共享静态数据
    17.1.3AppInst示例应用程序
    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.1DLL与进程的地址空间
    19.2DLL的总体运行情况
    19.3创建DLL模块
    19.3.1导出的真正含义
    19.3.2使用非VisualC++工具创建DLL
    19.4创建可执行模块
    19.5运行可执行模块
    第20章DLL高级技术
    20.1显式加载DLL模块和符号链接
    20.1.1显式加载DLL模块
    20.1.2显式卸载DLL模块
    20.1.3显式链接到导出符号
    20.2DLL的入口函数
    20.2.1DLL_PROCESS_ATTACH通知
    20.2.2DLL_PROCESS_DETACH通知
    20.2.3DLL_THREAD_ATTACH通知
    20.2.4DLL_THREAD_DETACH通知
    20.2.5顺序调用DllMain
    20.2.6DllMain和C/C++运行时库
    20.3延迟加载DLL
    20.4函数转发器
    20.5已知的DLL
    20.6DLL重定向
    20.7模块的基址重置
    20.8绑定模块
    第21章线程本地存储
    21.1动态TLS
    21.2静态TLS
    第22章DLL注入以及API挂接
    22.1DLL注入:一个例子
    22.2使用注册表注入DLL
    22.3使用Windows钩子注入DLL
    22.4使用远程线程注入DLL
    22.4.1InjectLibrary示例应用程序
    22.4.2ImageWalkDLL
    22.5使用特洛伊DLL注入DLL
    22.6将DLL作为调试程序注入
    22.7在Windows98平台上使用内存映射文件注入代码
    22.8使用CreateProcess来注入代码
    22.9API挂接:一个例子
    22.9.1通过覆写代码实现API挂接
    22.9.2通过操作模块的导入部分来实现API挂接
    22.9.3LastMsgBoxInfo示例应用程序
    第五部分结构化异常处理
    第23章终止处理例程
    23.1Funcenstein1
    23.2Funcenstein2
    23.3Funcenstein3
    23.4Funcfurter1
    23.5小测验:FuncaDoodleDoo
    23.6Funcenstein4
    23.7Funcarama1
    23.8Funcarama2
    23.9Funcarama3
    23.10Funcarama4:最终的边界
    23.11有关finally块的说明
    23.12Funcfurter2
    23.13SEH终止示例应用程序
    第24章异常处理程序和软件异常
    24.1通过例子理解异常过滤器和异常处理程序
    24.1.1Funcmeister1
    24.1.2Funcmeister2
    24.2EXCEPTION_EXECUTE_HANDLER
    24.2.1一些有用的例子
    24.2.2全局展开
    24.2.3暂停全局展开
    24.3EXCEPTION_CONTINUE_EXECUTION
    24.4EXCEPTION_CONTINUE_SEARCH
    24.5GetExceptionCode
    24.5.1与内存相关的异常
    24.5.2与异常相关的异常
    24.5.3与调试相关的异常
    24.5.4与整数相关的异常
    24.5.5与浮点数相关的异常
    24.6GetExceptionInformation
    24.7软件异常
    第25章未处理异常和C++异常
    25.1即时调试
    25.2关闭异常消息框
    25.2.1强制进程终止运行
    25.2.2包装一个线程函数
    25.2.3包装所有的线程函数
    25.2.4自动调用调试器
    25.3自己调用UnhandledExceptionFilter
    25.4UnhandledExceptionFilter函数的内部细节
    25.5异常和调试程序
    25.6C++异常与结构化异常比较
    第六部分窗口
    第26章窗口消息
    26.1线程的消息队列
    26.2将消息投送到一个线程的消息队列中
    26.3向窗口发送消息
    26.4唤醒一个线程
    26.4.1队列状态标志
    26.4.2从线程队列中提取消息的算法
    26.4.3使用内核对象或者队列状态标志来唤醒一个线程
    26.5使用消息发送数据
    26.6Windows处理ANSI/Unicode字符和字符串的方法
    第27章硬件输入模型与本地输入状态
    27.1原始输入线程
    27.2本地输入状态
    27.2.1键盘输入和焦点
    27.2.2鼠标光标管理
    27.3将虚拟输入队列和本地输入状态相关联
    27.3.1LISLab示例应用程序
    27.3.2LISWatch示例应用程序
    附录
    附录A构建环境
    附录B消息解析器、子控件宏以及API宏
  • 内容简介:
      本书是讲解Windows操作系统内部机制的一本专著。作者从基本概念入手,全面系统地介绍了Windows底层实现机制、Windows应用程序的基本构件(包括进程、线程、内存管理、动态链接库、线程本地存储和Unicode)以及各类WindowsAPI等,并列举了大量应用程序示例,精辟地分析了Windows编程的各个难点和要点,为掌握Windows编程技巧提供了一条有效的捷径。
      本书适合Windows编程人员参考。
      作者简介:
      JeffreyRichter,是一位在全球享有盛誉的技术作家,尤其在Windows/.NET领域有着杰出的贡献。他的第一本Windows著作《Windows95:ADeveloperSGuide》大获好评,从而声名远扬。之后,他又推出了经典著作《Windows高级编程指南》和dWindows核心编程》。如今这两本书早已成为Windows程序设计领域的经典之作,培育了几代软件开发设计人员。Jeffrey是WinteIIect公司的创始人之一,也是MSDN杂志.NET专栏的特邀编辑。他对Windows思想的领悟、对Windows细节的熟稔,是其他任何作家难以企及的。他是Windows技术作家中当之无愧的一面旗帜。
  • 作者简介:
    Jeffrey Richter全球享有盛誉的微软技术专家,著名技术咨询和培训公司Wintellect创始人之一,MSDN Magazine杂志特邀编辑.多年来,他担任微软各开发团队顾问,参与了微软的许多关键产品包括各版本Windows.VisualcStudio.Microsoft Office和NET框架的设计和编程.他撰写了一系列著作,包括本书和《深入理解.NET》(第2版·英文版,人民邮电出版社,2008),都堪称技术图书的典范,1影响了一代Windows程序员,并因此荣获微软公司社区最高技术荣誉“微软软件传奇人物”(Software Legend)称号.
    Christophe Nasarrec知名技术专家,MSDN Magazine杂志专栏作者.目前在著名商业智能公司BusinessObjects任开发经理,负责开发桌面和基于Web的商业智能解决方案.他擅长Windows和.NET底层开发,曾经编写过许多著名的底层工具.
  • 目录:
    译者序
    前言
    作译者简介
    第一部分程序员必读
    第1章错误处理
    1.1自定义错误处理的实现
    1.2错误显示例程
    第2章Unicode
    2.1字符集
    2.1.1单字节和双字节字符集
    2.1.2Unicode:宽字节字符集
    2.2为何需要Unicode
    2.3Windows2000和Unicode
    2.4Windows98和Unicode
    2.5WindowsCE和Unicode
    2.6评论
    2.7关于COM
    2.8如何编写Unicode源代码
    2.8.1C运行库的Unicode支持
    2.8.2Windows定义的Unicode数据类型
    2.8.3Windows系统中的Unicode函数和ANSI函数
    2.8.4Windows字符串函数
    2.9让应用程序符合ANSI和Unicode规范
    2.9.1Windows字符串函数
    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.2CreateProcess函数
    4.2.1pszApplicationName和pszCommandLine
    4.2.2psaProcess、psaThread和bInheritHandles
    4.2.3fdwCreate
    4.2.4pvEnvironment
    4.2.5pszCurDir
    4.2.6psiStartInfo
    4.2.7ppiProcInfo
    4.3进程的终止
    4.3.1主线程的入口函数返回
    4.3.2ExitProcess函数
    4.3.3TerminateProcess函数
    4.3.4进程中所有线程的运行终止
    4.3.5进程的运行终止
    4.4子进程
    4.5枚举系统中运行的进程
    第5章作业
    5.1对作业进程的限制
    5.2把进程放入作业
    5.3终止作业中所有进程的运行
    5.4查询作业统计信息
    5.5作业通知信息
    5.6JobLab示例应用程序
    第6章线程的基本知识
    6.1创建线程的时机
    6.2何时不能创建线程
    6.3编写第一个线程函数
    6.4CreateThread函数
    6.4.1psa
    6.4.2cbStack
    6.4.3pfnStartAddr和pvParam
    6.4.4fdwCreate
    6.4.5pdwThreadID
    6.5终止线程
    6.5.1线程函数返回
    6.5.2ExitThread函数
    6.5.3TerminateThread函数
    6.5.4在进程终止运行时终止线程
    6.5.5线程终止运行时发生的操作
    6.6线程的一些内部细节
    6.7对于C/C++运行时库的考虑
    6.7.1Oops—错误地调用了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.3SchedulingLab示例应用程序
    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.3Queue应用程序示例
    9.7线程同步对象表
    9.8其他线程同步函数
    9.8.1异步设备I/O
    9.8.2WaitForInputIdle
    9.8.3MsgWaitForMultipleObjects(Ex)
    9.8.4WaitForDebugEvent
    9.8.5SignalObjectAndWait
    第10章线程同步工具包
    10.1临界区的实现:Optex
    10.2创建线程安全的数据类型和反信号量
    10.3单写入多读出程序的保护
    10.4WaitForMultipleExpressions函数的实现
    第11章线程池
    11.1场景1:异步调用函数
    11.2场景2:按规定的时间间隔调用函数
    11.3场景3:在某个内核对象变为已通知状态时调用函数
    11.4场景4:异步I/O请求运行完成时调用函数
    第12章纤程
    12.1使用纤程
    12.2Counter示例应用程序
    第三部分内存管理
    第13章Windows内存结构
    13.1进程的虚拟地址空间
    13.2虚拟地址空间分区
    13.2.1无效断点分配分区(适于Windows2000和Windows98)
    13.2.2MS-DOS/16位Windows应用程序兼容分区(仅适于Windows98)
    13.2.3用户模式分区(适用Windows2000和Windows98)
    13.2.464KB禁止进入分区(仅适用于Windows2000)
    13.2.5共享的MMF分区(仅适用于Windows98)
    13.2.6内核模式分区(使用于Windows2000和Windows98)
    13.3地址空间区域
    13.4在地址空间区域中提交物理存储器
    13.5物理存储器和页面文件
    13.6保护属性
    13.6.1Copy-On-Write访问
    13.6.2特殊访问保护属性标志
    13.7综合使用所有元素
    13.7.1区域的内部详情
    13.7.2Windows98上地址空间的差异
    13.8数据对齐的重要性
    第14章虚拟内存
    14.1系统信息
    14.2虚拟内存的状态
    14.3确定地址空间状态
    14.3.1VMQery函数
    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地址窗口扩展(仅使用于Windows2000)
    第16章线程栈
    16.1Windows98下的线程栈
    16.2C/C++运行时库中的栈检测函数
    16.3Summation示例应用程序
    第17章内存映射文件
    17.1内存映射的可执行文件和DLL文件
    17.1.1可执行文件或DLL的多个实例之间无法共享的静态数据
    17.1.2在可执行文件或DLL的多个实例之间共享静态数据
    17.1.3AppInst示例应用程序
    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.1DLL与进程的地址空间
    19.2DLL的总体运行情况
    19.3创建DLL模块
    19.3.1导出的真正含义
    19.3.2使用非VisualC++工具创建DLL
    19.4创建可执行模块
    19.5运行可执行模块
    第20章DLL高级技术
    20.1显式加载DLL模块和符号链接
    20.1.1显式加载DLL模块
    20.1.2显式卸载DLL模块
    20.1.3显式链接到导出符号
    20.2DLL的入口函数
    20.2.1DLL_PROCESS_ATTACH通知
    20.2.2DLL_PROCESS_DETACH通知
    20.2.3DLL_THREAD_ATTACH通知
    20.2.4DLL_THREAD_DETACH通知
    20.2.5顺序调用DllMain
    20.2.6DllMain和C/C++运行时库
    20.3延迟加载DLL
    20.4函数转发器
    20.5已知的DLL
    20.6DLL重定向
    20.7模块的基址重置
    20.8绑定模块
    第21章线程本地存储
    21.1动态TLS
    21.2静态TLS
    第22章DLL注入以及API挂接
    22.1DLL注入:一个例子
    22.2使用注册表注入DLL
    22.3使用Windows钩子注入DLL
    22.4使用远程线程注入DLL
    22.4.1InjectLibrary示例应用程序
    22.4.2ImageWalkDLL
    22.5使用特洛伊DLL注入DLL
    22.6将DLL作为调试程序注入
    22.7在Windows98平台上使用内存映射文件注入代码
    22.8使用CreateProcess来注入代码
    22.9API挂接:一个例子
    22.9.1通过覆写代码实现API挂接
    22.9.2通过操作模块的导入部分来实现API挂接
    22.9.3LastMsgBoxInfo示例应用程序
    第五部分结构化异常处理
    第23章终止处理例程
    23.1Funcenstein1
    23.2Funcenstein2
    23.3Funcenstein3
    23.4Funcfurter1
    23.5小测验:FuncaDoodleDoo
    23.6Funcenstein4
    23.7Funcarama1
    23.8Funcarama2
    23.9Funcarama3
    23.10Funcarama4:最终的边界
    23.11有关finally块的说明
    23.12Funcfurter2
    23.13SEH终止示例应用程序
    第24章异常处理程序和软件异常
    24.1通过例子理解异常过滤器和异常处理程序
    24.1.1Funcmeister1
    24.1.2Funcmeister2
    24.2EXCEPTION_EXECUTE_HANDLER
    24.2.1一些有用的例子
    24.2.2全局展开
    24.2.3暂停全局展开
    24.3EXCEPTION_CONTINUE_EXECUTION
    24.4EXCEPTION_CONTINUE_SEARCH
    24.5GetExceptionCode
    24.5.1与内存相关的异常
    24.5.2与异常相关的异常
    24.5.3与调试相关的异常
    24.5.4与整数相关的异常
    24.5.5与浮点数相关的异常
    24.6GetExceptionInformation
    24.7软件异常
    第25章未处理异常和C++异常
    25.1即时调试
    25.2关闭异常消息框
    25.2.1强制进程终止运行
    25.2.2包装一个线程函数
    25.2.3包装所有的线程函数
    25.2.4自动调用调试器
    25.3自己调用UnhandledExceptionFilter
    25.4UnhandledExceptionFilter函数的内部细节
    25.5异常和调试程序
    25.6C++异常与结构化异常比较
    第六部分窗口
    第26章窗口消息
    26.1线程的消息队列
    26.2将消息投送到一个线程的消息队列中
    26.3向窗口发送消息
    26.4唤醒一个线程
    26.4.1队列状态标志
    26.4.2从线程队列中提取消息的算法
    26.4.3使用内核对象或者队列状态标志来唤醒一个线程
    26.5使用消息发送数据
    26.6Windows处理ANSI/Unicode字符和字符串的方法
    第27章硬件输入模型与本地输入状态
    27.1原始输入线程
    27.2本地输入状态
    27.2.1键盘输入和焦点
    27.2.2鼠标光标管理
    27.3将虚拟输入队列和本地输入状态相关联
    27.3.1LISLab示例应用程序
    27.3.2LISWatch示例应用程序
    附录
    附录A构建环境
    附录B消息解析器、子控件宏以及API宏
查看详情
您可能感兴趣 / 更多
Windows核心编程
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
Windows核心编程
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
Windows核心编程
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
Windows核心编程
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
Windows核心编程
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
Windows核心编程
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
Windows核心编程
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
Windows核心编程
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
Windows核心编程
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
Windows核心编程
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
Windows核心编程
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
Windows核心编程
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译