鱼C论坛

 找回密码
 立即注册
查看: 1797|回复: 0

[Windows] 【进阶】《Windows核心编程》(第5版)

[复制链接]
最佳答案
215 
发表于 2016-11-12 19:14:24 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
TB1tChLKpXXXXbnXFXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
4 C5 Y. q* H& ^( z; I2 X/ M

# M8 r4 o6 x4 G, j% L* U3 s书名:《Windows核心编程》(第5版)' K( u! X8 o4 n. C
作者:Jeffrey Richter,Christophe Nasarre" ^- ]  N9 g& [
译者:葛子昂,周靖,廖敏
4 x1 N+ i9 p+ @5 r3 D出版社:清华大学出版社! j; n: j! ~$ R: d
出版年:2008年9月1日(第1版)
2 ?/ `; \# i  R" [# V& f1 `定价:99.00元
" l; I; E* b6 w! X0 H装帧:平装" r' [# P0 Q' U& n  P; W0 d
ISBN:9787302184003" S0 v6 o" Q/ a% n  a
' d! n1 L; M9 o+ ^) e
购买链接:
( V2 \' O- |3 V! [  C) @8 P* b" s- c0 N$ E, q

! P$ j% N7 G* d$ a# G# F( A
亚马逊 -> 传送门
/ Q6 T! a$ ^- k0 B4 H* R( T4 v8 }& ~) W5 U$ a, s
当当网 -> 传送门
8 O- g8 T3 {7 I3 D. D( f2 W7 ^5 f/ k/ c
京东 -> 传送门! `2 C- e/ B: o- g7 j9 z! m# L

8 P3 h( B+ a0 r2 w8 h- V! ^6 F7 R天猫 -> 传送门
+ w$ m" P# \5 E3 G& T; W. C2 y/ w3 C4 ^
: R, W- U  x6 s/ ^  a7 h3 d
内容简介:9 ~% g  t$ Y" I, Q" t5 X

7 }5 i! x5 O. c8 c/ j
9 ~. {7 f+ z# V: i4 h1 I0 C0 V+ D5 g
《Windows核心编程》(第5版)是一本经典的 Windows 核心编程指南,从第 1 版到第 5 版,引领着数十万程序员走入 Windows 开发阵营,培养了大批精英。《Windows核心编程》(第5版)针对 WindowsXP,WindowsVista 和 WindowsServer2008 全面修订。主题广泛,内容丰富,讲解深入而精辟。透过这本 Windows 编程经典,我们可以在专家的悉心指导下,洞悉 Windows 编程精华,深入了解高级编程技巧,编写出高性能的 Windows 应用程序。; a+ T6 }& z8 D% `7 c' D1 m

3 {* Q% w5 R7 `本书重要主题:
. Q; R  o. H9 f& u! {, ^
  • 如何为 32 位和 64 位 Windows 系统构建和实现应用程序?
  • 如何新建和处理进程与作业?
  • 如何调度、管理、同步和销毁线程?
  • 如何通过 I/O 完成端口执行同步和异步设备 I/O 操作?
  • 如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存?
  • 如何处理默认调拨的线程栈物理存储?
  • 如何为延迟加载、API 拦截和进程注入构建 DLL?
  • 如何使用结构化异常处理、Windows 错误恢复和应用程序重启等机制?7 K6 V& j4 Q5 l. l) d

: g3 `: x# H% M5 K8 e
+ y! N% Z4 k2 A目录:
# E9 Y, i& f' n
  k* F* E4 v4 A& D0 L

1 o% k  d, v: }9 L第1部分 必备知识
; V& C& ]; |# v; y5 v5 Q
; m1 R( v* @8 e; W9 a& o2 @5 w第1章 错误处理6 E8 Q" G" F, G4 o! G
+ v, m& o4 H% u' P. K9 v7 A
1.1 定义自己的错误代码4 C0 x$ Z5 X# s# r- m  d' O! ?* ?% e
1.2 Error Show示例程序
. J  z! P7 M7 I, Z' t3 _0 r
; K" U# B! q1 j+ y第2章 字符和字符串处理& ^$ U( l% `, L& P) ^
* d5 |  ]" U3 j  I! m* D
2.1 字符编码0 K! y: K- g9 q6 x+ U
2.2 ANSI字符和Unicode字符与字符串数据类型
# d1 D0 r+ l1 Q. W* p3 e2.3 Windows中的Unicode函数和ANSI函数
0 Y7 k" j  ~& D7 X2.4 C运行库中的Unicode函数和ANSI函数
; l1 X4 n. O3 Y7 x) t2 D9 k2.5 C运行库中的安全字符串函数
+ R- e8 w1 x- l* d6 @; T% f# G2.5.1 初识新的安全字符串函数
3 f  L' @9 R5 {- A2 E2.5.2 在处理字符串时如何获得更多控制
  J. ]9 a8 G7 b$ F) G, }: E2.5.3 Windows字符串函数6 C: w: F* X6 J* R1 f$ S4 a
2.6 为何要用Unicode5 q3 v/ |# M. g$ d- q8 M
2.7 推荐的字符和字符串处理方式' E' T. x7 y! [* w$ O. x2 W
2.8 Unicode与ANSI字符串转换
" ^+ D( I$ m" o/ l4 [. I3 T2.8.1 导出ANSI和Unicode DLL函数6 g% G( J7 x+ d5 F/ F/ j$ U. z6 h9 P
2.8.2 判断文本是ANSI还是Unicode
9 Q, J! ?/ ^3 o" Q! r
9 k  V0 I+ ]; L7 [第3章 内核对象) _, k% Q/ }' t7 U5 F
7 d6 W7 S( _1 p2 Y3 H
3.1 何为内核对象* K. H; W7 S  O4 Y+ b  o( p0 O
3.1.1 使用计数# p  H* s7 r+ B0 B. w5 C0 I
3.1.2 内核对象的安全性
0 c" b  n' ?* ^. z3.2 进程内核对象句柄表0 |, D7 K; e- F4 u
3.2.1 创建一个内核对象' R( i2 G3 j# F
3.2.2 关闭内核对象
4 D3 h4 u3 N- j. J3 P3.3 跨进程边界共享内核对象1 i, p1 ~$ \. j' o/ x- B+ P- B
3.3.1 使用对象句柄继承' p$ J7 M- C) X8 u4 @' M, R
3.3.2 改变句柄的标志
# O% z( W) r- I& I# ^+ ~1 @3.3.3 为对象命名
- t  N1 R& [5 p0 Y6 R) r' s3.3.4 终端服务命名空间  U. d& }& j- S. C9 m9 q
3.3.5 专有命名空间. I9 T, S0 J. w) h4 @& f3 q# S
3.3.5 复制对象句柄
( P& c: a& z* D" z0 w
% R$ s5 V2 ~+ V+ F2 `+ j0 ?! q" p第Ⅱ部分 工作机制+ ]! T, E0 n' ]5 A5 ?

: S. \4 D# n, I5 c7 v8 b2 T第4章 进程  ~/ h; d( b% `# ~; q% z4 X8 \; Z

, m$ y0 N% y% u1 y* P# L4.1 编写第一个Windows应用程序! B3 n" {; }) \5 b
4.1.1 进程实例句柄
; C8 }$ l. w4 j3 q: d. C$ H4.1.2 进程前一个实例的句柄
# K6 u8 P* b/ `* n' @4.1.3 进程的命令行  _0 X+ a7 L. j' V) K) o
4.1.4 进程的环境变量
+ T& n3 U6 S7 o( ~4 J+ G# u4.1.5 进程的关联性
$ Y7 g3 Q4 W: k6 x7 u2 X( _( w4.1.6 进程的错误模式+ s3 T, W# D9 b, B+ i% U6 w3 Z/ f
4.1.7 进程当前所在的驱动器和目录- N% Z% Y; Z- m# ?
4.1.8 进程的当前目录
) e5 r4 ]+ K1 f% H9 M* Q! J5 g; z4.1.9 系统版本
9 `8 m  x" S5 p( ]8 J% ]- `4.2 Create Process函数3 Y7 [- i, e( S# e
4.2.1 psz Application Name和psz Command Line参数
# t: P9 v' k+ w4.2.2 psa Process,psaThread和bInherit Handles参数
* A, E, K& W, \, o7 C; h2 S4.2.3 fdw Create参数
% u6 c7 J, P9 k- h) u, V4.2.4 pv Environment参数2 d5 L6 o+ p' S
4.2.5 psz Cur Dir参数( {! q: w0 ?3 ]# u
4.2.6 psi StartInfo参数
: H, ~# g/ q3 B# u. S" \9 ~9 v) U. Y4.2.7 ppi ProcInfo参数" k% a. Q& d( m9 C- w% W
4.3 终止进程
  @$ f2 E4 n  f* _( _- V. \1 [% U4.3.1 主线程的入口点函数返回  W0 B& d) _. ?0 e& W5 Z0 o
4.3.2 Exit Process函数
0 f: ?# V2 s2 L& v% [; ^, B$ L4.3.3 Terminate Process函数' a( K7 s% t2 e, F) k3 p
4.3.4 当进程中的所有线程终止时2 w  i- o& R9 o0 `- c( F, Z  |
4.3.5 当进程终止运行时
2 y! @& |* @+ ~' b- H4.4 子进程
& Q' z# R! O& V1 N4.5 管理员以标准用户权限运行时- F& l9 d8 B- o2 O- D
4.5.1 自动提升进程的权限% e: c' W5 r3 {0 l2 ~) @
4.5.2 手动提升进程的权限* |2 X+ n* K" m2 i( J0 Y/ [
4.5.3 何为当前权限上下文- C# [$ g9 A9 N
4.5.4 枚举系统中正在运行的进程
! M* l. g# q. d3 |7 R9 ?6 D& t+ `4.5.5 Process Information示例程序
* Y4 v: b* e8 u, \' ^1 L& B5 m: T4 s! `2 M
第5章 作业
% w4 }' R( T8 ^. Y. }; N. ~0 \4 n2 R+ k' o. i
5.1 对作业中的进程施加限制# Z7 W  F/ f) m$ K' ~8 }4 Q) `
5.2 将进程放入作业中
5 f! t1 E3 a3 U0 F: m, t5.3 终止作业中的所有线程查询作业统计信息
/ Z! Q4 k% x: }5.4 作业通知
1 `8 o' f% G+ A8 z" V, O$ I5.6 Job Lab示例程序* W! W' ]" h$ G. w. F6 K

  l0 _4 r% \: o4 O8 g/ m第6章 线程基础7 ~3 g5 A+ l1 L! t0 V& K! X
: n/ s4 U/ _) b5 R0 `+ l; ?6 @
6.1 何时创建线程$ m' V: u9 i5 o( w/ I8 l8 Q7 J( A
6.2 何时不应该创建线程
9 a9 A0 |' V& p6.3 编写第一个线程函数
5 s- Y! x" a8 W. |9 o& _6.4 Create Thread函数
) m3 ^3 X6 o6 L8 k& V! p, ~5 }6.4.1 psa参数4 }* Y  L+ ^$ {6 t
6.4.2 cb Stack Size参数0 }! y% k: b6 n
6.4.3 pfn Start Addr和pv Param参数' A) p' M" s) t- F# h2 r3 k, \
6.4.4 dw Create Flags
. e' l" W4 u: ^  C6.4.5 pdw ThreadID71 P$ [1 ~5 Y" `* |* a
6.5 终止运行线程
1 q/ F7 ~3 d5 H/ M6.5.1 线程函数返回
: L9 C+ g" a. i/ c6.5.2 Exit Thread函数' N1 A4 k) {. y/ ~8 m$ L+ I
6.5.3 Terminate Thread函数
1 v( R. {. R' U; A' Z1 Z3 l6.5.4 进程终止运行时) U' T5 {5 k  o' H4 p) T9 L1 Q
6.5.5 线程终止运行时  W& _1 F9 i* w
6.6 线程内幕. Y5 v; U3 s, x3 q: e4 A7 O7 j$ q" i
6.7 C/C++运行库注意事项
0 T# a# r2 q7 t4 v) g6.7.1 用_beginthreadex而不要用Create Thread创建线程( `& E2 _& f2 E1 j5 [1 V
6.7.2 绝对不应该调用的C/C++运行库函数& G% V5 m: M5 V) s7 T
6.8 了解自己的身份: T$ b  j9 g! ^
6.8.1 将伪句柄转换为真正的句柄
- p8 Y6 m* k  Q/ c# Y: _4 X. E! ^) f( J& y2 a
第7章 线程调度、优先级和关联性
- y( q' O2 o4 i, B  O+ h9 S) e# H: p7 [% I1 c
7.1 线程的挂起和恢复
& [3 v" U0 u$ ]3 M6 y% Z7.2 进程的挂起和恢复0 l: t5 E* y3 X
7.3 睡眠
" {  I6 ]) D7 w1 T: f9 e7.4 切换到另一个线程
1 i+ L% V; m: F8 m7.5 在超线程CPU上切换到另一个线程
; Z1 f9 v9 W$ A; `3 N9 N- [7.6 线程的执行时间9 B- e3 N9 k, ]( Y& I1 D
7.7 在实际上下文中谈CONTEXT结构
" n, x; x. K- ]" b7 D) m3 k7.8 线程优先级2 Z$ S/ |; n7 f7 m# u, ?
7.9 从抽象角度看优先级
+ E9 ]- S* W! q7.10 优先级编程, y6 R: p8 K# w+ M
7.10.1 动态提升线程优先级. R4 N7 w$ P0 [0 b4 P( J, K
7.10.2 为前台进程微调调度程序7 J% ~* `4 I, [9 c* U$ n1 f
7.10.3 调度I/O请求优先级
9 q3 J+ O9 O1 D3 ^4 U4 {7.10.4 Scheduling Lab 示例程序& J" B. J7 W& T* G$ A* B, S
7.11 关联性
; V' S3 L! d; i  [: c4 N6 h( k4 q7 g, z0 V( M  C
第8章 用户模式下的线程同步8 F$ Q% e% k  j. l
1 |/ M  H, O& V% k
8.1 原子访问:Interlocked系列函数
) I& l7 X1 k! C/ {+ S4 H8.2 高速缓存行
$ n' f$ [8 \: M) K& i) Q' A8.3 高级线程同步需要避免使用的一种方法5 t& r4 g* X) w+ U* ~4 S% y; a
8.4 关键段7 F" s  ^; n& l5 m, b9 z
8.4.1 关键段:细节& d+ o1 a' a; t3 F/ m  u( [  _
8.4.2 关键段和旋转锁/ D9 X0 @6 A0 d
8.4.3 关键段和错误处理: [0 `+ _" j4 C
8.5 Slim读/写锁
& h$ M# F' |+ ^' {7 F; M3 X8.6 条件变量
6 Y- L% o  C# \. x8.6.1 Queue示例程序
. e: \, V3 J5 J4 L; O9 D* ?8.6.2 在停止线程时的死锁问题+ o2 V" Z1 D8 Y7 g
8.6.3 一些有用的窍门和技巧* L' \' f, I9 d( w3 [

# _5 k- M! Z! o4 V& N1 q) ^5 X. P第9章 用内核对象进行线程同步
4 T. t9 j& g( Y+ w! G! p8 o
/ R1 n7 H, u: u6 F/ z4 ^' f9.1 等待函数
/ ~6 ]* z. N! |( N9.2 等待成功所引起的副作用
; i! R% l2 g, y  B9.3 事件内核对象6 L# S4 N( j  X; Z! \. l
9.4 可等待的计时器内核对象' ~# [$ \1 }% |% i, Z2 ]
9.4.1 让可等待的计时器添加APC调用# B6 q4 w; Q" F1 a% E4 r
9.4.2 计时器的剩余问题3 V' b6 d" {% l0 Z* |! R& v
9.5 信号量内核对象
5 |% d& X3 u. C" m% M/ ~2 K% y6 w9.6 互斥量内核对象' [- W+ n: c8 _7 j( ^
9.6.1 遗弃问题/ r5 }( s0 d* ]. d) {( n, V( J; b
9.6.2 互斥量与关键段的比较4 e3 l" c; {% e' d+ c
9.6.3 Queue示例程序1 ~: a8 r8 Z; v' Z2 }
9.7 线程同步对象速查表
! h/ H/ [# g$ {: v& |9.8 其他的线程同步函数9 {, V& Y9 \! ?4 t3 O, H5 v
9.8.1 异步设备I/O
; c6 i. w/ z& G* ~% i4 }9.8.2 Wait For InputIdle函数" \0 c# \& |5 x1 ~; Q* Z! a( c
9.8.3 Msg Wait For Multiple Objects(Ex)函数( M% P0 {0 B5 }& f
9.8.4 Wait For Debug Event函数
0 U( Q  ]" M( g# G9.8.5 Signal Object And Wait函数
2 \! `3 T3 Q1 Y5 |+ f6 N9.8.6 使用等待链遍历API来检测死锁
5 S, x* J7 }3 n/ ^8 y
$ d6 f% v5 _! R( \& K第10章 同步设备I/O与异步设备I/O
0 F: j: X' y1 }! e2 h6 T* k3 e8 E- w, Q
10.1 打开和关闭设备细看Create File函数
8 t$ B! U( Y, k0 r& _  j! @10.2 使用文件设备! T$ k) T  }  m0 m, i2 h( B5 A7 u
10.2.1 取得文件的大小
3 Y6 y, r6 T& ~10.2.2 设置文件指针的位置
. b! T: r5 Z8 }! Q$ m# D2 R10.2.3 设置文件尾
: q% ~0 A" ~7 {! K10.3 执行同步设备I/O
2 M: e( Q1 G4 W2 s3 s3 o10.3.1 将数据刷新至设备$ o7 ]+ ], M) z4 i* N
10.3.2 同步I/O的取消
$ h- p7 b" g1 q4 X0 y- e10.4 异步设备I/O基础. N6 ?4 Z! k, x, E8 N3 O
10.4.1 OVERLAPPED结构8 @- m7 U: l! ?3 g2 M" }: c: Z  B1 N
10.4.2 异步设备I/O的注意事项
( k9 ~% H8 J9 A7 \+ |" s10.4.3 取消队列中的设备I/O请求$ b6 m) b/ x% z
10.5 接收I/O请求完成通知" N9 K# h: }# W
10.5.1 触发设备内核对象
( {: T  K1 Z0 w9 T10.5.2 触发事件内核对象
8 P( m3 [0 X' h: r" p( @10.5.3 可提醒I/O
7 |) }7 c; a3 X' u10.5.4 I/O完成端口
- |; G- p1 t! o% h/ J% w10.5.5 模拟已完成的I/O请求
+ J7 k' ^5 {8 s6 N5 u6 `9 Q' l3 u& j. [
第11章 Windows线程池& o; Z3 a7 C5 e
/ }' B8 K% |9 R3 W/ i
11.1 情形1:以异步方式调用函数; S3 p2 X; A6 ^
11.1.1 显式地控制工作项0 Q2 w! |' A' C( D5 J6 p
11.1.2 Batch示例程序
7 R  k# W7 M! w; t0 M11.2 情形2:每隔一段时间调用一个函数
& T% z% D6 @- Y8 j6 P+ n11.3 情形3:在内核对象触发时调用一个函数
. E* I7 t4 t6 Q: O- Q) ^+ o11.4 情形4:在异步I/O请求完成时调用一个函数& ~/ G; D( p% B3 I) K( ~
11.5 回调函数的终止操作+ u" p' o6 m( g; _8 o/ g
11.5.1 对线程池进行定制7 w" z0 x$ s! l9 ~! m, J1 S& `
11.5.2 得体地销毁线程池:清理组- m0 w- O' m8 Q; X* m7 y

; m" t+ A  x2 Z9 h第12章 线程! Q- Z; }$ l, R! T% F2 J

- s% n3 l# G( }4 G8 w6 ]' `第Ⅲ部分 内存管理
6 B- g+ L2 u" Q4 y' d. a6 N
- p! [4 D5 U0 Z6 @1 N1 s第13章 Windows内存体系结构
2 @3 Y% d* k" R. R7 Q7 J. F
9 h% v5 T0 Z+ j9 _13.1 进程的虚拟地址空间$ z1 v, [2 k9 L0 I! Z5 q9 d
13.2 虚拟地址空间的分区2 w  F# _: m  u7 H% s4 p
13.2.1 空指针赋值分区9 f) |0 q1 Z) ^! u
13.2.2 用户模式分区9 V) M5 }2 @3 j1 U0 c" V4 `
13.3 地址空间中的区域
( E) L: I; n2 L9 M/ Y( z  f' a13.4 给区域调拨物理存储器. q5 ?' }8 j, h1 r. Q" l( Z
13.5 物理存储器和页交换文件' r* }8 p- N. Z2 I3 w+ g: b
13.6 页面保护属性, e/ ]8 k: }! ?0 n# T4 V
13.6.1 写时复制
  q! v8 F. v  J" ?4 y% F  ^0 [13.6.2 一些特殊的访问保护属性标志
7 q3 N$ @( k! u( A( ^13.7 实例分析
3 G8 O# A7 |4 N13.8 数据对齐的重要性
9 b" H; b9 P' F0 Y6 q4 g" Q
5 J. V7 m9 ^2 a0 K5 T5 a) S# X0 M+ C第14章 探索虚拟内存1 E1 h. j3 |% G

; N6 Q. [: @6 I3 A- ]14.1 系统信息1 K; s  f! D% H7 X- w( D  x
14.2 虚拟内存状态
* ]) `$ o" _9 e) A) ^14.3 NUMA机器中的内存管理
. J" Z  @& |# c5 d* s4 b0 M14.4 确定地址空间的状态
( W- k4 T& h5 L* i14.4.1 VM Query函数+ i8 o8 P1 ~  T3 W: p; K+ n
14.4.2 示例程序:虚拟内存映射
5 g1 f0 L! G8 x" m. g2 o8 O
! x5 @; m7 u4 |* m: m第15章 在应用程序中使用虚拟内存
6 F/ N0 q' H0 E1 d% I
% l% v: C# u5 \( r8 ]) m: y15.1 预订地址空间区域! W  E" J, z7 J
15.2 给区域调拨物理存储器
& I9 ?6 d# u& m. g3 q15.3 同时预订和调拨物理存储器: F/ E. X+ T8 e( u
15.4 何时调拨物理存储器
6 A3 P, }, Y1 d  Z3 ]- P15.5 撤销调拨物理存储器及释放区
% M2 o7 E4 H' ~15.5.1 何时撤销调拨物理存储器
$ y4 y- m( C9 w, u% z( s' O15.5.2 虚拟内存分配示例程序/ A; b0 D* J. n' P6 }: q4 s
15.6 改变保护属性
2 z$ R+ Q) X! Q, l* G1 [$ n2 R; L15.7 重置物理存储器的内容
; W- g9 t8 m* L& q15.8 地址窗口扩展
+ a: r, T1 P! C+ C
% T5 y) K( Z3 w第16章 线程栈; f5 I: x3 w# M. a" R
  e5 W! f. y5 o: x. ?" [$ x8 }2 D3 J% q
16.1 C/C++运行库的栈检查函数0 Z/ |4 X7 s+ u5 C0 h/ ^$ `8 X' R
16.2 Summation示例程序
5 a( N2 @/ ?$ H! q4 D( m
8 |& d+ r! f7 N. H1 @# V# Q  k第17章 内存映射文件2 l; g" E; T& H) \9 [6 S) b- C4 [; Z, O5 h

2 j! S3 Z; L# L* u$ ~8 T) J17.1 映射到内存的可执行文件和DLL) Z- s4 x7 y$ g3 q
17.1.1 同一个可执行文件或DLL的多个实例不会共享静态数据$ u* m$ F0 w( M0 e( \& e
17.1.2 在同一个可执行文件或DLL的多个实例间共享静态数据& @  o% K, u5 k
17.1.3 Application Instances示例程序2 c6 I- u) N6 U* Y) J5 y5 M
17.2 映射到内存的数据文件# s, u& p- g0 a, j3 f! F
17.2.1 方法1:一个文件,一块缓存8 X/ G2 E$ F  [' V0 }$ q, [
17.2.2 方法2:两个文件,一块缓存
  E  c1 E3 m0 q1 z) d7 `6 h: ~+ s17.2.3 方法3:一个文件,两块缓存
4 a( e& d( l8 F2 J- X$ T$ H& ]6 \17.2.4 方法4:一个文件,零个缓存
/ p! F  ^8 x( @" _4 G) f8 C17.3 使用内存映射文件
/ e2 l, B2 W" Y+ V  C; E5 s* U( l17.3.1 第1步:创建或打开文件内核对象  p; l% m" o* c$ u$ `4 ^
17.3.2 第2步:创建文件映射内核对象
. k  }! K" J) E4 w: S2 o6 l- R17.3.3 第3步:将文件的数据映射到进程的地址空间% F: w: ]9 w2 W# m( ~9 @% x( E4 v0 U
17.3.4 第4步:从进程的地址空间撤销对文件数据的映射
6 E0 ^2 ~; k- X17.3.5 第5步和第6步:关闭文件映射对象和文件对象
7 k: b7 Z: v- O8 T: X9 l# F/ h17.6 File Reverse示例程序& o) J; x$ O5 h0 P  h
17.7 用内存映射文件来处理大文件
5 c! E% C* h( r4 m( F17.8 内存映射文件和一致性: ?7 H" N4 J/ F$ t. p/ N
17.9 给内存映射文件指定基地址( F/ P, c' d: J6 a3 G5 d5 F
17.10 内存映射文件的实现细节- Y* ]: i* T) V; ?2 [6 `' O- _4 c( A
* o: R5 x/ [6 {9 I" a
第18章 堆$ K5 D. _2 j3 j+ [' D- U+ z9 E1 N

5 y( U! p4 `0 L4 G) C* P& w18.1 进程的默认堆
+ y# y0 z% _8 w% c) b18.2 为什么要创建额外的堆, L& ]$ Q. N! W: o' B' t% r
18.2.1 对组件进行保护
& ^; [% f  `6 \6 Y( \9 p, T# F4 a18.2.2 更有效的内存管理+ R3 L! F, i1 ]8 h+ l& H: t$ U
18.2.3 使内存访问局部化
8 b5 C5 o1 f( O: V18.2.4 避免线程同步的开销
3 T, Q- H% z4 u18.2.5 快速释放: c& l1 d6 g1 w4 M% [
18.3 如何创建额外的堆% O/ Y7 D2 a/ l% L
18.3.1 从堆中分配内存块' S1 ^' F7 Z8 P
18.3.2 调整内存块的大小$ Q6 Z0 b0 I2 y6 r$ F8 \& w/ _- }. G
18.3.3 获得内存块的大小. O% M2 J& ?  L/ b9 l9 s
18.3.4 释放内存块
3 @8 ^/ D1 Y% R/ s9 H6 Y18.3.5 销毁堆( |* n9 C5 o% K3 H1 [( E  l
18.3.6 在C++中使用堆8 H, R1 _# A* E3 @; u, G$ n" K
18.4 其他堆函数
& I) T9 `; R/ S" O! K5 z# N. h/ \6 x1 R
第Ⅳ部分 动态链接库4 {1 T" `! a5 E: e  S; U
% Z- f- ^. l9 j' w' n9 }
第19章 DLL基础
; @3 L8 R+ c: Y! f( x# A% L' h( e8 }* I- ~
19.1 DLL和进程的地址空间
3 o1 ~9 V3 O: a+ a19.2 纵观全局, n# m" ^5 I2 ]2 v+ u
19.2.1 构建DLL模块; Z1 b1 }& z7 Y% E. x: L2 f% ]/ U
19.2.2 构建可执行模块
3 V% P' e" ~; R9 C7 _3 x19.2.3 运行可执行模块
# O6 _0 _0 m: _9 @3 S' j* u7 p0 N) q0 G
第20章 DLL高级技术
3 j( n, K$ o# {* r
2 i$ I1 m( o. c4 j) Y20.1 DLL模块的显式载入和符号链接
: ~2 a5 E8 @9 `/ X) j; p! R3 o20.1.1 显式地载入DLL模块
2 {$ n$ y  y% W5 Z' q7 @20.1.2 显式地卸载DLL模块, ^' N" W6 F" U! }7 o8 U
20.1.3 显式地链接到导出符号
# T- B* F9 b9 P( Q$ b, C20.2 DLL的入口点函数# L0 |) n% a4 e. _8 R
20.2.1 DLL_PROCESS_ATTACH通知
0 r3 @/ _1 s1 \! x* w20.2.2 DLL_PROCESS_DETACH通知: i0 T0 m% ?* u. w
20.2.3 DLL_THREAD_ATTACH通知# Y2 w1 P, Z/ G1 e+ D
20.2.4 DLL_THREAD_DETACH通知" X# X3 }! g' n
20.2.5 Dll Main的序列化调用
- z  V: }! f% x# T* Z$ b5 a5 }20.2.6 Dll Main和C/C++运行库
1 K/ L1 c& g1 H5 [5 d" ?6 c20.3 延迟载入DLL2 g' ^/ w1 A' Y6 ?; L
20.4 函数转发器. h) ]( S' y$ Z- D5 c& U
20.5 已知的DLL% }* v# W! P! \3 u' g& K" E
20.6 DLL重定向9 r8 T! X" Z7 u/ u
20.7 模块的基地址重定位$ o: X2 I0 O. d  l. K+ B, G
20.8 模块的绑定
6 T* B6 `2 k  v- w2 H: o, L
" x9 i5 ~$ \" j  z第21章 线程局部存储区
! \: B3 \1 \2 @* a/ W3 Q" f5 ?6 z! s# `+ o( {. v0 o& \
21.1 动态TLS
/ X* t; G0 b8 k8 N4 T21.2 静态TLS0
: \8 [9 p$ i" }- i2 V# V3 ?' e4 L, C8 Y1 P, a
第22章 DLL注入和API拦截" ^% [6 p- Q2 }& |

4 q6 }0 ?3 k0 p/ S22.1 DLL注入的一个例子
( v% I0 }" G" G3 X0 i22.2 使用注册表来注入DLL
" j6 T+ U% P! k22.3 使用Windows挂钩来注入DLL3 i9 y$ ~' y5 b% S) L" b0 s- ?
22.4 使用远程线程来注入DLL, E+ c! X( s  s- W# Y: u3 @. n
22.4.1 Inject Library示例程序; I+ e) E. J' `* S2 w+ P6 w
22.4.2 Image Walk DLL) p5 z; ~; A7 r; a- |
22.5 使用木马DLL来注入DLL! `( ~! _- ?/ d' S/ f0 x; `! D
22.6 把DLL作为调试器来注入5 u9 i2 I, d* [; c
22.7 使用Create Process来注入代码  s/ L. k, F8 D% U% }- d
22.8 API拦截的一个例子97 Q' C0 m8 }$ j6 t5 `
22.8.1 通过覆盖代码来拦截API0, n) d: M. a0 l: R
22.8.2 通过修改模块的导入段来拦截API
2 g. Z  u6 J$ w3 K" j22.8.3 Last Message Box Info示例程序2 H& ^5 u; o% d  `

" Q: d$ F  U% z# e; [' h4 T第Ⅴ部分 结构化异常处理
2 Q8 W& T% d* ~7 a3 w7 v1 ?6 w
! V) a9 ^" b: t, u$ Y第23章 终止处理程序
. g" E6 E4 N3 k& x3 f/ @; ^
3 Y0 b$ H& Q& K9 `! S* r第24章 异常处理程序与软件异常
9 _" G" r0 l; u- [( `2 m* D; }$ H
. m: i9 Y1 i' U! `; d24.1 通过实例理解异常过滤程序和异常处理程序
0 t- v0 K7 `2 q% d8 V( v24.1.1 Funcmeister1函数
) Z  F! p# l( e( b5 W: m+ L24.1.2 Funcmeister2函数
* E, e6 S4 l1 j" t& \24.2 EXCEPTION_EXECUTE_HANDLER1
$ t' D8 g% X' X* c* n+ N. {' l) U24.2.1 一些有用的例子& y) F4 {! z6 G/ T+ z' x
24.2.2 全局展开
' z+ b' @' r% A/ w% u, n24.2.3 停止全局展开
: m6 T' a7 |* R" Z24.3 EXCEPTION_CONTINUE_EXECUTION
. C: F+ v: W3 u+ `' o" [3 S24.4 EXCEPTION_CONTINUE_SEARCH0# S' d( Q5 H- x+ Q# ~5 J% j+ }# `
24.5 GetExceptionCode2
! y, K. q$ ]8 P3 K4 M3 I24.6 GetExceptionInformation6
1 q  y) Z- o! T24.7 软件异常
0 G. t9 e4 E% {- F5 j4 ?, W8 }$ H+ V: M) s$ T, M2 o& D
第25章 未处理异常、向量化异常处理与C++异常
# Q( ]1 D) v% j) ^+ _' i5 {9 i+ s8 T' U
25.1 Unhandled Exception Filter函数详解
. d! r; F9 d5 v, i- q25.2 即时调试  H# o+ `# c  l7 w. {3 r
25.3 电子表格示例程序2 F, K3 l$ t! `2 j" L
25.4 向量化异常和继续处理程序) w' s& p: X0 h2 |1 p6 F
25.5 C++异常与结构化异常的比较
( P3 R9 |' v) t2 A2 C8 z25.6 异常与调试器; h4 Q+ l6 G9 {0 ^1 B0 P

4 D1 O) O8 K9 B5 M8 A: a; Q第26章 错误报告与应用程序恢复* w+ b4 f. Y2 H' F+ N

% p$ P+ I8 M# \4 h26.1 Windows错误报告控制台
* m( |7 G- j. p' E/ W26.2 可编程的Windows错误报告
( b6 Y6 H* n+ R4 }1 p) a26.3 对进程中所有的问题报告进行定制9 N* |7 P3 s7 H. P; f  Q
26.4 问题报告的创建与定制
, X6 [- L2 P( X5 s' Q) K26.4.1 创建一个自定义的问题报告
9 c5 ?% `" g6 p26.4.2 设置报告参数:Wer Report Set Parameter( n8 R7 d, T1 d# c( u" ?/ D1 ?
26.4.3 将小型转储文件放入报告:Wer Report Add Dump 8
! M, H$ [% [0 {4 D26.4.4 将任意文件放入报告:Wer Report AddFile 9
7 y: D) ~5 W/ C8 q. r9 W26.4.5 修改对话框文本:Wer Report Set UI Option 5 E! K" D  [) H% d' P
26.4.6 提交错误报告:Wer Report Submit 8 C& y+ ?0 H! k& N0 o8 S
26.4.7 关闭问题报告:Wer Report Close Handle
* W* l* `  {% ~4 y26.4.8 Customized WER示例程序2 ^6 m5 s* O. J! s5 O4 d
26.5 应用程序的自动重启与恢复& }# Q6 D# p  D- ~% I+ W' M+ N% Y
26.5.1 应用程序的自动重启3 s8 l3 g" n/ w0 _4 ?3 j
26.5.2 对应用程序恢复的支持" M- T! o! J# I# a
5 D! C4 h4 a' x
第Ⅵ部分6 \1 j9 T7 P/ J2 u
9 ?5 ~4 L: g4 G. D3 u% \2 S
附录A 构建环境. ?8 z% V/ Y8 x( L4 B( [( o

6 {/ e. {3 u2 K4 F附录B 消息处理宏、子控件宏和API宏
) I  R) j2 g# X7 q4 R5 u$ t/ j( {  z. r% R! l# i/ r* `7 J
索引; ]* w! a5 ?5 {* l6 e6 d' s
( ?4 N7 _' ]) r
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号 )

GMT+8, 2018-7-19 05:51

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表