《WindowsNT高级编程技术》求取 ⇩

第一章 进程与线程1

1.1 Windows NT Executive对象2

1.2 创建进程:CreateProcess函数3

1.2.1 lpszImageName4

1.2.2 lpszCommandLine4

1.2.3 lpsaProcess,lpsaThread,fInheritHandles5

1.2.4 fdwCreate6

1.2.5 lpvEnvironment7

译者序7

目录7

1.2.6 lpszCurDir8

1.2.7 lpsiStartInfo8

鸣谢9

前言11

1.2.8 lppiProcInfo11

1.3 终止进程13

1.3.1 ExitProcess函数13

1.3.2 TerminateProcess函数13

1.3.3 进程的结束14

1.4 何时创建线程14

1.5 何时不用创建线程16

1.6 线程的生命周期17

1.6.1 产生线程:CreateThread函数17

1.6.2 幸存的WinMain函数19

1.6.3 终止线程21

1.7 识别自己的身份23

1.8 Windows NT如何调度线程26

1.8.1 进程优先级类27

1.8.2 修改进程优先级类28

1.8.3 设定线程相对优先级29

1.8.4 挂起及恢复线程30

1.9 子进程31

1.9.1 运行分离的子进程32

1.10 查看系统内部32

1.11 进程、线程和C运行时库37

第二章 堆内存管理40

2.1 我所知的CPU40

2.2 全局和局部堆API42

2.2.1 可移植到Win32的16位Windows函数45

2.2.2 有语义变化的函数46

2.2.3 应该避免使用的函数47

2.3.1 应用程序保护48

2.2.4 已经不再使用的函数48

2.3 创建自己的Win32堆48

2.3.2 有效的内存管理49

2.3.3 局部访问49

2.3.4 Win32堆API50

2.3.4.1 HeapCreate50

2.3.4.2 GetProcessHeap51

2.3.4.3 HeapAlloc51

2.3.4.4 HeapSize52

2.3.4.5 HeapReAlloc52

2.3.4.6 HeapFree53

2.3.4.7 HeapDestroy53

2.4 在C++中使用堆53

3.1 使用虚拟内存58

第三章 虚拟内存管理58

3.1.1 保留地址空间59

3.1.2 提交内存60

3.1.3 保留地址空间同时提交内存61

3.1.4 使用地址空间61

3.1.5 释放地址空间62

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

3.1.7 修改保护属性74

3.1.8 确定地址空间状态75

3.1.9 虚拟内存映像示例程序76

3.1.10 系统状态示例应用程序87

3.1.11 不把内存切换到页面文件中93

3.1.12 虚拟内存统计93

3.1.12.1 虚拟内存状态示例程序94

3.2 设计强壮的应用程序99

第四章 内存映射文件101

4.1 操纵文件数据:样例学习101

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

4.1.2 方法2:二个文件,一个缓冲区102

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

4.1.4 方法4:一个文件,0缓冲区(无需缓冲)102

4.2 使用内存映射文件103

4.3 内存映射文件讨论106

4.3.1 文件倒置示例应用程序107

4.3.2 映射文件的一点麻烦111

4.4 用内存映射文件共享数据112

4.4.1 如何利用内存映射文件共享内存113

4.4.2 内存映射文件共享示例应用程序115

4.5 如何用内存映射文件管理可执行文件和DLL122

第五章 线程同步124

5.1 线程同步概述124

5.1.1 最坏的事情之一124

5.2 临界区125

5.2.1 创建临界区127

5.2.2 使用临界区128

5.2.3 用临界区同步GDI对象133

5.2.4 临界区示例应用程序134

5.3 用Windows NT对象进行同步145

5.3.1 互斥量148

5.3.1.1 使用互斥量来代替临界区149

5.3.1.2 互斥量示例应用程序153

5.3.2 信号量161

5.3.2.1 超级市场示例应用程序162

5.3.3 事件184

5.3.3.1 人工重置事件185

5.3.3.2 Bucket of Balls示例应用程序186

5.3.3.3 自动重置事件202

5.3.3.4 文档统计示例应用程序202

5.4 线程挂起210

5.4.1 Sleep210

5.4.2 异步文件I/O210

5.4.3 WaitForInputIdle210

5.4.4 MsgWaitForMultipleObjects211

5.4.5 WaitForDebugEvent212

5.4.6 Interlocked函数族212

第六章 Win32子系统环境214

6.1 多任务214

6.1.1 抢占式调度215

6.2 Windows NT的客户/服务器结构217

6.2.1 进程线程和代理线程是如何一起工作的218

6.3 线程信息219

6.4 非序列化输入225

6.4.1 Windows NT怎样使输入非序列化225

6.4.1.1 共享线程输入队列226

6.5 局部输入状态228

6.5.1 键盘输入和焦点229

6.5.2 鼠标光标管理232

6.5.3 局部输入状态实验示例程序233

6.6 线程队列和消息处理248

6.6.1 发送消息给线程的消息队列248

6.6.2 发送消息给窗口249

6.6.3 用消息发送数据252

6.6.4 拷贝数据示例应用程序254

第七章 动态连接库260

7.1 动态连接库如何从16位Windows变到Windows NT260

7.1.1 16位Windows如何向应用程序提供DLL260

7.1.2 Windows NT如何提供DLL给进程使用261

7.1.3 进程间使用DLL局部堆共享数据262

7.2 LibMain、DllEntryPoint、DllMain的比较263

7.2.1 进程和线程的装入和卸下规则265

7.2.2 DLL和C运行库266

7.3 划分进程地址空间268

7.3.1 DLL的基址269

7.4 EXE或DLL的段275

7.5 模拟GetModuleUsage函数:ModUse示例程序278

7.6 禁止运行应用程序的多个实例:MultInst示范程序285

7.7 从DLL中输出函数286

7.8 从DLL输出数据288

7.9 动态连接库和钩子函数290

7.10 其它进程产生的子类窗口292

7.10.1 Program Manager Restore示例程序293

7.11 16位Windows的GlobalNotify函数304

7.12 GMEM_SHARE和GMEM_DDESHARE标志304

第八章 线程局部存储306

8.1 动态线程局部存储307

8.1.1 使用动态线程局部存储308

8.1.2 动态线程局部存储示例应用程序310

8.2 静态线程局部存储318

8.2.1 静态局部存储示例应用程序319

第九章 文件系统和文件输入输出327

9.1 Windows NT的文件约定328

9.2 系统和卷操作329

9.2.1 获得卷的特定信息332

9.2.2 磁盘信息查看示例应用程序336

9.3 目录操作343

9.3.1 获得当前目录343

9.3.2 改变当前目录344

9.3.3 获得系统目录344

9.3.4 获得目录路径345

9.3.5 创建和删除目录345

9.4 拷贝、删除、移动及改名文件345

9.4.1 拷贝一个文件346

9.4.2 删除一个文件346

9.4.3 移动一个文件346

9.4.3.1 MoveFile和MoveFileEx的差别347

9.4.4 改名文件348

9.5 创建、打开和关闭文件349

9.6 同步读写文件353

9.6.1 定位文件指针354

9.6.2 设置文件尾355

9.6.3 强制缓冲的数据写入磁盘356

9.6.4 锁定及解锁文件的某区域356

9.7 异步读写文件358

9.7.1 同时执行多个异步文件I/O操作363

9.7.2 告警异步文件I/O364

9.7.3 告警I/O示例应用程序366

9.8 操纵文件属性377

9.8.1 文件标志377

9.8.3 文件时间戳378

9.8.2 文件大小378

9.9 搜寻文件381

9.9.1 目录漫游示例应用程序384

9.10 文件系统变化通知392

9.10.1 文件变化示例应用程序393

第十章 结构化异常处理407

10.1 终止处理程序408

10.1.1 SEH终止示例应用程序419

10.2 异常过滤程序和异常处理程序427

10.2.1 EXCEPTION_EXECUTE_HANDLER429

10.2.2 EXCEPTION_CONTINUE_EXECUTION430

10.2.2.1 谨慎使用EXCEPTION_CONTINUE_EXECUTION431

10.2.3 EXCEPTION_CONTINUE_SEARCH432

10.2.4 全局展开433

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

10.2.6 SEH异常情况应用程序示例444

10.3 软件异常情况454

10.3.1 在C++构造函数中的软件异常情况456

10.3.2 SEH软件异常情况应用程序示例456

10.3.3 停止全局展开467

10.3.4 未处理的异常情况468

10.3.5 没有调试器附属时的未处理异常情况468

10.3.6 不显示异常情况消息框470

10.3.7 自己调用UnhandledExceptionFilter472

10.3.8 未处理的核心态异常情况472

第十一章 UNICODE474

11.1 字符集474

11.1.1 单字节与双字节字符集474

11.1.2 Unicode:宽字节字符集475

11.2 为什么你要使用Unicode476

11.3 如何编写Unicode源代码476

11.3.1 C运行时库中对Unicode的支持477

11.3.2 Win32定义的Unicode数据类型481

11.3.3 Win32中的Unicode和ANSI函数482

11.4 把你的应用程序转换为能够识别ANSI和UNICODE484

11.4.1 Win32中的字符串函数484

11.4.2 资源486

11.4.3 在Unicode和ANSI间转换字符串487

11.4.4 窗口类和过程490

附录A 消息拆析器492

A.1 消息拆析器493

A.2 子控制宏496

A.3 API宏497

1994《WindowsNT高级编程技术》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由(美)Jeffrey Richter著;郑全战等译 1994 北京:清华大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

Windows95 Windows NT3.5高级编程技术(1996 PDF版)
Windows95 Windows NT3.5高级编程技术
1996 北京:清华大学出版社
Visual C++ 高级编程技术——开发实例剖析(1999年09月第1版 PDF版)
Visual C++ 高级编程技术——开发实例剖析
1999年09月第1版 电子工业出版社
80286/386/387高级编程实用技术( PDF版)
80286/386/387高级编程实用技术
中国科学院希望高级电脑技术公司
高级程序设计技术( PDF版)
高级程序设计技术
北京:人民邮电出版社
FOXPRO 高级程序设计技术( PDF版)
FOXPRO 高级程序设计技术
TURBO C2.0高级程序设计技术(1990 PDF版)
TURBO C2.0高级程序设计技术
1990 科海培训中心
UNIX高级编程(1992 PDF版)
UNIX高级编程
1992 上海电子计算机厂科技服务部培训部
高级汉字BASIC和中西文dBASEⅢ编程技术(1992 PDF版)
高级汉字BASIC和中西文dBASEⅢ编程技术
1992 北京:气象出版社
C语言及其高级编程技术(1995 PDF版)
C语言及其高级编程技术
1995 天津:南开大学出版社
高级Windows编程技术(1999 PDF版)
高级Windows编程技术
1999 西安:西安交通大学出版社
Visual Basic 6.0高级编程技巧(1999 PDF版)
Visual Basic 6.0高级编程技巧
1999 北京:电子工业出版社
高级工程技术英文选(1988 PDF版)
高级工程技术英文选
1988 北京:清华大学出版社
Java高级编程(1997 PDF版)
Java高级编程
1997 北京:电子工业出版社
UNIX高级编程技术(1994 PDF版)
UNIX高级编程技术
1994 上海:上海科学技术文献出版社
C++高级编程技术(1994 PDF版)
C++高级编程技术
1994 北京:电子工业出版社