Advanced Windows

副标题:无

作   者:(美)[J.里克特]Jeffrey Richter著;王书洪,刘光明译

分类号:

ISBN:9787302033288

微信扫一扫,移动浏览光盘

简介

本书以详尽的资料和大量的范例深入讨论了有关32位Windows编程的高级问题,包括进程和线程 的管理、Win32的内存管理、消息处理、动态链接库、文件系统和设备输入输出、结构化异常处理、Unicode 等,并重点讨论了Windows95和WindowsNT在实现上的不同之处,其中包含了大量的编程技巧。 本书可供高等院校计算机专业的师生和广大的计算机编程人员使用。

目录

第0章 绪论

0.1 关于应用程序范例

0.1.1 用c语言编写程序

0.1.2 message cracker macros(消息拆析宏)

0.1.3 有关16位windows编程的知识

0.1.4 在windows 95下运行应用程序范例

0.1.5 不相关代码

0.1.6 范例应用程序的独立性

0.1.7 strict编译

0.1.8 错误检查

0.1.9 没有错误

0.1.10 测试平台和环境

0.1.11 unicode

0.2 安装范例程序

0.2.1 配套的cd-rom盘

第1章 win 32 api和支持它的平台

1.1 梦想一下:win 32 api

1.2 win 32s

1.3 windows nt

1.4 windows 95

.1.5 windows ce

1.6 现实:win 32 api

第2章 内核对象

2.1 什么是内核对象

2.1.1 使用计数

2.1.2 安全

2.2 进程的内核对象句柄表

2.2.1 创建内核对象

2.2.2 关闭内核对象

2.3 在进程间共享内核对象

2.3.1 对象句柄继承

2.3.2 改变句柄标志

2.3.3 命名对象

2.3.4 复制对象句柄

第3章 进程

3.1 编写第一个win 32应用程序

3.1.1 进程的实例句柄

3.1.2 进程的前一个实例的句柄

3.1.3 进程的命令行

3.1.4 进程的环境变量

3.1.5 进程的错误模式

3.1.6 进程的当前驱动器和目录

3.1.7 系统版本

3.2 createprocess函数

3.2.1 lpszapplicationname和lpszcommandline

3.2.2 lpsaprocess,lpsathread和finherithandles

3.2.3 fdwcreate

3.2.4 lpvenvironment

3.2.5 lpszcurdir

3.2.6 lpsistartinfo

3.2.7 lppiprocinfo

3.3 终止进程

3.3.1 exitprocess函数

3.3.2 terminate process函数

3.3.3 进程中的所有线程结束了

3.3.4 进程终结时发生的事情

3.4 子进程

3.4.1 运行分离的子进程

第4章 线程

4.1 何时创建线程

4.2 何时不用创建线程

4.3 编写第一个线程函数

4.3.1 线程的栈

4.3.2 线程的context结构

4.3.3 线程的执行时间

4.4 createthread函数

4.4.1 lpsa

4.4.2 cbstack

4.4.3 lpstartaddr和lpvthreadparm

4.4.4 fdwcreate

4.4.5 lpidthread

4.5 终止线程

4.5.1 exit thread函数

4.5.2 terminatethread函数

4.5.3 进程终结

4.5.4 线程终结时的情况

4.6 识别自己的身份

4.7 系统如何调度线程

4.7.1 使用win 32 api怎样赋优先级

4.7.2 改变进程的优先级类

4.7.3 设定线程的相对优先级

4.7.4 挂起和恢复线程

4.8 系统内部情况

4.9 进程、线程和c运行时库

4.9.1 应避免使用的c运行时函数

第5章 win 32内存结构

5.1 虚地址空间

5.1.1 windows 95如何划分进程的地址空间

5.1.2 windows nt如何划分进程的地址空间

5.2 地址空间中的区域

5.3 在区域内提交物理存储

5.4 物理存储

5.4.1 不包含在页面文件中的物理存储

5.5 保护属性

5.5.1 写拷贝访问

5.5.2 特殊的访问保护属性标志

5.6 小结

5.6.1 区域的内部

5.7 windows 95的地址空间的不同

第6章 虚拟内存

6.1 系统信息

6.1.1 系统信息范例应用程序

6.2 虚拟内存状态

6.2.1 虚拟内存状态范例应用程序

6.3 确定地址空间的状态

6.3.1 vmquery函数

6.3.2 虚拟内存映射范例应用程序

第7章 在应用程序中使用虚拟内存

7.1 在地址空间中保留区域

7.2 在保留区域中提交存储

7.3 同时保留区域和提交物理存储

7.4 何时提交物理存储

7.5 释放物理存储和释放区域

7.5.1 何时释放物理存储

7.5.2 虚拟内存分配范例应用程序

7.6 修改保护属性

7.7 在ram中锁定物理存储

7.8 重设物理存储的内容

7.9 线程的栈

7.9.1 windows 95下的线程的栈

7.9.2 c运行时库的栈检查函数
第8章 内存映射文件

8.1 内存映射exe和dll

8.1.1 不被exe或dll的多个实例共享的静态数据

8.2 内存映射数据文件

8.2.1 方法1:一个文件,一个缓冲区

8.2.2 方法2:两个文件,一个缓冲区

8.2.3 方法3:一个文件,两个缓冲区

8.2.4 方法4:一个文件,零个缓冲区

8.3 使用内存映射文件

8.3.1 第1步:创建或打开文件内核对象

8.3.2 第2步:创建文件映射内核对象

8.3.3 第3步:将文件数据映射入进程地址空间

8.3.4 第4步:从进程地址空间中解除文件数据映射

8.3.5 第5步和第6步:关闭文件映射对象和文件对象

8.3.6 用内存映射文件处理大文件

8.4 内存映射文件和一致性

8.4.1 文件倒置范例应用程序

8.4.2 指定内存映射文件的基本地址

8.5 内存映射文件和win 32实现

8.5.1 使用内存映射文件在进程间共享数据

8.5.2 由页面文件支持的内存映射文件

8.5.3 内存映射文件共享范例应用程序

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

第9章 堆

9.1 什么是win 32堆

9.1.1 进程的缺省堆

9.1.2 创建自己的win 32堆

9.1.3 创建win 32堆

9.1.4 释放win 32堆

9.1.5 在c++时使用堆

9.1.6 其他一些堆函数

9.2 16位windows堆函数

第10章 线程同步

10.1 线程同步概述

10.2 最坏的事情

10.2.1 创建监临界区

10.2.2 使用临界区

10.2.3 临界区范例应用程序

10.3 用内核对象同步线程

10.3.1 互斥量

10.3.2 互斥量范例应用程序

10.3.3 信号量

10.3.4 超市范例应用程序

10.3.5 事件

10.3.6 bucket of balls范例应用程序

10.3.7 swmrg复合同步对象

10.3.8 bucket范例源代码

10.3.9 document statistics范例应用程序

10.3.10 可等的计时器

10.4 线程挂起

10.4.1 sleep

10.4.2 异步文件i/o

10.4.3 waitforlnputidle

10.4.4 msgwaitformultipleobjects

10.4.5 waitfordebugevent

10.4.6 signalobjectandwait

10.4.7 interlocked函数族

第11章 窗口消息和异步输入

11.1 多任务

11.1.1 抢先式调度

11.2 线程队列和消息处理

11.2.1 win 32消息队列结构

11.2.2 向线程的消息队列投递消息

11.2.3 发送消息给窗口

11.2.4 唤醒线程

11.3 用消息发送数据

11.3.1 copydata范例应用程序

11.4 非序列化输入

11.4.1 输入如何被非序列化

11.5 局部输入状态

11.5.1 键盘输入和焦点

11.5.2 鼠标光标管理

11.5.3 局部输入状态实验范例应用程序

第12章 动态链接库

12.1 创建动态链接

12.1.1 映射dll到进程的地址空间

12.2 dll的进入/退出函数

12.2.1 dll_process_attach

12.2.2 dll_process_datach

12.2.3 dll_thread_attach

12.2.4 dll_thread_detach

12.2.5 系统如何序列化对dllmain的调用

12.2.6 dllmain和c运行时库

12.3 从dll中输出函数和变量

12.4 从dll中引入函数和变量

12.4.1 dll的头文件

12.5 创建dll供非visual c++工具使用

12.6 在exe或dll映射之间共享数据

12.6.1 exe或dll中的节

12.6.2 moduse范例应用程序

12.6.3 multinst范例应用程序

第13章 线程局部存储

13.1 动态线程局部存储

13.1.1 使用动态线程局部存储

13.1.2 动态线程局部存储范例应用程序

13.2 静态线程局部存储

13.2.1 静态线程局部存储范例应用程序

第14章 文件系统

14.1 win 32的文件名约定

14.2 系统和卷操作

14.2.1 得到卷的特定信息

14.2.2 磁盘信息查看范例应用程序

14.3 目录操作

14.3.1 得到当前目录

14.3.2 改变当前目录

14.3.3 得到系统目录

14.3.4 得到windows目录

14.3.5 创建和删除目录

14.4 拷贝、删除、移动和重命名文件

14.4.1 拷贝文件

14.4.2 删除文件

14.4.3 移动文件

14.4.4 重命名文件

14.5 查找文件

14.5.1 目录漫游范例应用程序

14.6 文件系统变化通知

14.6.1 文件变化范例应用程序

14.7 操纵文件属性

14.7.1 可执行文件类型

14.7.2 文件属性

14.7.3 文件大小

14.7.4 文件时间戳

14.8 创建临时文件
第15章 设备i/o

15.1 打开和关闭设备

15.1.1 createfile

15.2 使用文件设备

15.2.1 定位文件指针

15.2.2 设置文件尾

15.2.3 加锁和解锁文件的区域

15.3 进行同步i/o

15.3.1 向设备强制刷新数据

15.4 进行异步i/o

15.5 使设备内核对象有信号

15.6 使事件内核对象有信号

15.7 告警i/o

15.7.1 告警i/o范例应用程序

15.8 i/o完成端口

15.8.1 模拟完成i/o请求

15.8.2 i/o完成端口范例应用程序

15.9 判断i/o请求是否完成

15.10 取消未完成的i/o请求

第16章 结构化异常处理

16.1 终止处理程序

16.1.1 理解终止处理程序

16.1.2 关于finally块的一些注解

16.1.3 seh终止范例应用程序

16.2 异常过滤程序和异常处理程序

16.2.1 理解异常过滤程序和异常处理程序

16.2.2 exception_execute_handler

16.2.3 exception_continue_execution

16.2.4 exception_continue_search

16.2.5 全局展开

16.2.6 停止全避展开

16.2.7 关于异常过滤程序的进一步讨论

16.2.8 getexceptioninformation

16.2.9 seh异常范例应用程序

16.2.10 seh sum范例应用程序

16.3 软件异常

16.3.1 seh软件异常范例应用程序

16.3.2 未处理的异常

16.3.3 没有附属调试器的未和的异常

16.3.4 不显示异常消息框

16.3.5 自己调用unhandledexceptionfilter

16.3.6 windows nt的未处理的内核模式异常

第17章 unicode

17.1 字符集

17.1.1 单字节和双字节字符集

17.1.2 unicode:宽字节字符集

17.2 为什么要使用unicode

17.3 如何编写unicode源代码

17.3.1 windows nt和unicode

17.3.2 windows 95和unicode

17.3.3 c运行时库对unicode的支持

17.3.4 win 32定义的unicode数据类型

17.3.5 win 32中的unicode和ansi宏数

17.4 使你的程序能识别ansi和unicode

17.4.1 win 32中的字符串函数

17.4.2 资源

17.4.3 文本

17.4.4 在unicode和ansi之间转换字符串

17.4.5 windows nt的窗口类和过程

第18章 打开进程边界

18.1 为什么要打开进程边界:一个例子

18.2 使用注册表来注入dll

18.3 使用windows钩来注入dll

18.3.1 desktop item position savev工具

18.4 使用远程线程注入dll

18.4.1 如何装入一个dll

18.5 影响其他进程的win 32函数

18.5.1 createremotethread

18.5.2 getthreadcontext和setthreadcontext

18.5.3 virtualqueryex和virtualprotectex

18.5.4 virtualallocex和virtualfreeex

18.5.5 readprocessmemory和writeprocessmemory

18.6 创建一个函数向任意进程的地址空间注入dll

18.6.1 版本0:为什么显然的方法不能工作

18.6.2 版本1:手编的机器语言

18.6.3 版本2:allocprocessmemory和createremore thread

18.6.4 procmem工具函数

18.6.5 injectlib函数

18.7 测试injectlib函数

18.7.1 注入库范例应用程序

18.7.2 映象遍历动态链接库

18.8 小结

附录 a fibers

a.1 例程:计算器应用程序

附录 b message crackerc

b.1 message crackers

b.2 child control宏

b.3 api宏

附录 c 编程环境

c.1 cmnhdr.h头文件

c.1.1 4级警告

c.1.1 windows版本

c.1.2 strict宏

c.1.3 cpu prtability宏

c.1.4 标准编码(unicode)
c.1.5 chdimof宏

c.1.6 chbegintheadex宏

c.1.7 chassert 宏和chverify宏

c.1.8 chhandle_dlgmsg宏

c.1.9 chassert宏和chverify宏

c.1.10 chmb宏

c.1.11 chinitstruct宏

c.1.12 chsetdlgicons宏

c.1.13 chwarnifunicodeunderwin 95宏

c.1.14 pragma message helper宏

c.1.15 链接指令

c.2 在源文件中不能对项目进行设置


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Advanced Windows
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    亲爱的云图用户,
    光盘内的文件都可以直接点击浏览哦

    无需下载,在线查阅资料!

    loading icon