鱼C论坛

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

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

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

马上注册,结交更多好友,享用更多功能^_^

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

x
TB1tChLKpXXXXbnXFXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

. `1 U( }7 O- i7 @: h, n. g4 ~+ l$ N- `: P- ]! f+ X7 V
书名:《Windows核心编程》(第5版)" B! g+ i% N' V! p5 C$ V5 W- Z: u# V
作者:Jeffrey Richter,Christophe Nasarre
3 [" X* q7 V; Z$ H译者:葛子昂,周靖,廖敏* G1 r2 s7 S1 ]
出版社:清华大学出版社/ R: I4 D# M/ q3 k+ u
出版年:2008年9月1日(第1版)2 c5 x" n6 c1 W  {
定价:99.00元
5 i7 m% H) h9 y" {0 x- V1 m装帧:平装
) _4 l- V8 r/ vISBN:97873021840031 i: y; _: I4 [% `1 l
; b8 S- _8 C2 ~4 S; m
购买链接:
) Y8 x& ?1 F% u0 q: q0 }& T0 Y5 w9 [


7 T4 m8 }  I2 y( G, ~9 I亚马逊 -> 传送门
0 p8 l3 _/ u" X! O& j  W. H+ G( y+ i( U
当当网 -> 传送门
% Z& }  t0 P8 R% t# @/ {
/ A" u- |/ ?  a0 Z; J* _! M, h' F! A京东 -> 传送门
& e% Q) U  c1 ^: N* s! ^2 i! k4 A% x! I! {3 @# C  h
天猫 -> 传送门9 G  y0 y  G4 \

9 t" m  w/ T5 Q8 E
( Y. `" V1 L# e  J& `5 E! o. X内容简介:
# I& o& P8 t; E" T; V& j' Z, N# r5 i0 J0 Y) ]% W/ m


5 @* N  M& e, A《Windows核心编程》(第5版)是一本经典的 Windows 核心编程指南,从第 1 版到第 5 版,引领着数十万程序员走入 Windows 开发阵营,培养了大批精英。《Windows核心编程》(第5版)针对 WindowsXP,WindowsVista 和 WindowsServer2008 全面修订。主题广泛,内容丰富,讲解深入而精辟。透过这本 Windows 编程经典,我们可以在专家的悉心指导下,洞悉 Windows 编程精华,深入了解高级编程技巧,编写出高性能的 Windows 应用程序。
' @% A+ @- x( l7 ]. u3 n6 Y3 z1 K4 J  N7 k: B% q7 ~+ ~  {9 E
本书重要主题:; B7 w- y% y% T6 l& O
  • 如何为 32 位和 64 位 Windows 系统构建和实现应用程序?
  • 如何新建和处理进程与作业?
  • 如何调度、管理、同步和销毁线程?
  • 如何通过 I/O 完成端口执行同步和异步设备 I/O 操作?
  • 如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存?
  • 如何处理默认调拨的线程栈物理存储?
  • 如何为延迟加载、API 拦截和进程注入构建 DLL?
  • 如何使用结构化异常处理、Windows 错误恢复和应用程序重启等机制?
    6 T2 \7 z) ^4 A% s* q) \5 _) e$ y9 o

% }( @4 c) d8 [& ~& W5 q4 ?0 q6 v% ~. W( U
目录:; I; g" p3 x2 ?& R8 D; {

+ e* k5 r' ^5 p% F5 O: t

6 n4 s# @6 t  s, O第1部分 必备知识+ h' q: o) V7 L2 I

3 U' R! j8 j2 y$ G8 a第1章 错误处理8 {0 z8 |& r7 g( U2 N
+ H8 c7 j! U9 J: ~& A* j6 r
1.1 定义自己的错误代码7 `& t6 K% y% E, R% z3 X+ {0 n" T
1.2 Error Show示例程序
, o2 D9 X  F; u# a" f2 O+ r) C
2 Z/ o/ j$ ~$ W3 c3 _; h2 C$ R6 U" J第2章 字符和字符串处理
& U7 e5 D( L: I7 M4 d. a6 N2 k5 F
2.1 字符编码' X# V( {0 \; a) \
2.2 ANSI字符和Unicode字符与字符串数据类型
+ |9 G' Z" d: C2 _, \! |2.3 Windows中的Unicode函数和ANSI函数" d% @2 n$ D, N& Q8 N
2.4 C运行库中的Unicode函数和ANSI函数
1 N- Q7 b3 |" m; T8 ~2.5 C运行库中的安全字符串函数4 K- {/ n* K6 [! Z
2.5.1 初识新的安全字符串函数
4 ^8 }* @+ j$ b2.5.2 在处理字符串时如何获得更多控制
7 T& P- g$ @4 G5 \" b' r2.5.3 Windows字符串函数* y, L# F/ J) |( N* F- \1 f
2.6 为何要用Unicode
' \+ `, p0 S; Y6 m! N3 D6 A9 u. D2.7 推荐的字符和字符串处理方式4 [6 g$ j3 g4 Y  U8 K8 e; g" \
2.8 Unicode与ANSI字符串转换
1 f5 Z3 O/ ~( A2.8.1 导出ANSI和Unicode DLL函数9 }8 W: l; |3 \7 [- c
2.8.2 判断文本是ANSI还是Unicode9 S4 D7 U( z8 k0 x" j
' c3 D3 F9 e1 |$ x" M& j
第3章 内核对象
7 p: m9 Z) V# V: W6 W
! M/ `- O6 t. ]. R' w1 ?3.1 何为内核对象
8 v: H( e8 q9 r( |2 l& i3.1.1 使用计数- p! m" T( g  S! i' @) N! L
3.1.2 内核对象的安全性6 T. C2 o1 x) Y% ~0 W
3.2 进程内核对象句柄表
! t' d7 V  u# L8 Z1 w$ j& [3.2.1 创建一个内核对象
6 _$ n/ E$ G) V; r- z2 i3.2.2 关闭内核对象
3 z; W- J, e6 H6 V% @3.3 跨进程边界共享内核对象: d- P4 ?6 B" p
3.3.1 使用对象句柄继承
. K2 @) ]/ \3 V+ z- H% x9 x5 x' [3.3.2 改变句柄的标志+ P! O) m. C" X$ z, C
3.3.3 为对象命名
& T& t; l$ ~3 K6 }0 i# t  I; f3.3.4 终端服务命名空间: O$ ]* u5 O) Q. ^& `
3.3.5 专有命名空间
6 C; w6 ?7 O( v& _3.3.5 复制对象句柄
5 ^% w  a# F% @4 b6 C" Y
2 f; @0 ?% X" }+ u5 Q, g第Ⅱ部分 工作机制
1 p  X' P* U+ a
4 ^! j- n/ j" f* ~& G3 C第4章 进程1 Z7 O- q& D) u0 p
- `0 s8 C. a: K
4.1 编写第一个Windows应用程序
$ @3 @; T% L9 U( M& B4.1.1 进程实例句柄) r: L, g) \% f6 s
4.1.2 进程前一个实例的句柄
+ I1 J8 ?: s/ C; u' o* Y, }0 B4.1.3 进程的命令行
( U9 {5 \& [* ]7 @4 b2 e5 I" D4.1.4 进程的环境变量0 @5 [: b" J; F$ v* A. X7 u
4.1.5 进程的关联性/ u8 K0 r4 N% n- q- F3 w
4.1.6 进程的错误模式: v% O/ F7 d% M* I9 C' M8 ^6 N
4.1.7 进程当前所在的驱动器和目录+ z3 `7 k, F% g% D$ \* F* g3 H
4.1.8 进程的当前目录
" l( t! l- K0 K. @0 d4.1.9 系统版本
5 ^4 t1 V$ i6 _9 y4 O9 r4.2 Create Process函数
  j4 @9 |+ _2 [8 y0 `4.2.1 psz Application Name和psz Command Line参数
  w# F3 q' e5 M# g7 D- Q4.2.2 psa Process,psaThread和bInherit Handles参数! w! M: s# [; @1 \4 B0 O
4.2.3 fdw Create参数
1 a- l. h- Y  ?; y4.2.4 pv Environment参数
6 F! n. m- s/ V* V# u3 [' k4.2.5 psz Cur Dir参数! t# [3 |; o& X) a* I
4.2.6 psi StartInfo参数
5 H: z2 Q" k, d% q; J+ |0 z. o4.2.7 ppi ProcInfo参数
: d9 v$ r& L  E6 Q/ q3 _4.3 终止进程# S0 f; y% ~1 ^5 U+ b3 h- a
4.3.1 主线程的入口点函数返回
9 u9 ~# m1 }& e& ?. D% x7 Y4.3.2 Exit Process函数
  z4 `) s; E/ T. t4.3.3 Terminate Process函数
- }- D# N6 Y: x+ h4 r4.3.4 当进程中的所有线程终止时9 k5 o' Z9 h) b1 ^  L
4.3.5 当进程终止运行时
- P8 w4 `, Z) L) N4.4 子进程$ Q4 ]9 m, ]% \7 W
4.5 管理员以标准用户权限运行时3 {& r; f  b0 _5 \% U8 w4 p9 }/ K
4.5.1 自动提升进程的权限( A: L9 q, a) {
4.5.2 手动提升进程的权限
' F. P( z! H& }( b4.5.3 何为当前权限上下文
; T7 a) ^' i. p' j4.5.4 枚举系统中正在运行的进程2 C. r: z$ S$ n1 d! E" q( b; }  W
4.5.5 Process Information示例程序6 r! {& X' x3 E, U% e& E

2 `; ^3 c1 F  t. R( e/ [8 a: d第5章 作业" ^+ l2 W: X/ O* W8 J: m" a
  p) u2 j5 c5 U6 k% g* E1 a
5.1 对作业中的进程施加限制
4 r7 k! U: p8 K+ G8 X% ^- |# K0 N4 Q5.2 将进程放入作业中! t* {: l3 w9 j
5.3 终止作业中的所有线程查询作业统计信息4 M* ^  [, X& e) S$ e
5.4 作业通知
2 T3 c( K3 ?( @2 l: y+ v0 J5.6 Job Lab示例程序8 i9 I) f, A5 G( t

% D. B* v4 ?8 h; C( F第6章 线程基础
$ C6 M  i% {8 K* f/ y7 Z
  E; E4 I+ T6 L9 g% |- l6.1 何时创建线程# I8 c( f3 b! q" O# i# u
6.2 何时不应该创建线程& t* U0 c* G+ N5 l! [) W
6.3 编写第一个线程函数+ [6 g2 c2 F9 x2 z, c$ H: S5 V
6.4 Create Thread函数
1 }. i- V; e1 M. H5 m! [! V6.4.1 psa参数( d1 J# b" s6 P
6.4.2 cb Stack Size参数
- J; k, a% H' g1 M- B. l6.4.3 pfn Start Addr和pv Param参数/ ?' \0 T3 R, ^) b0 l. @  ]! \
6.4.4 dw Create Flags1 Q! M& f9 o6 J- p/ V3 G
6.4.5 pdw ThreadID7$ r, m3 @" W+ s/ T3 ^0 u
6.5 终止运行线程
' v2 M& `/ \- ]$ z5 I6.5.1 线程函数返回+ E; B: z" i6 e6 x% S
6.5.2 Exit Thread函数
+ M' c% N* `3 ?9 U' v3 f& `! n( b6.5.3 Terminate Thread函数$ {8 T0 \9 h  }
6.5.4 进程终止运行时
4 K+ e/ V+ P9 c6.5.5 线程终止运行时/ V/ C) g9 k3 W. O
6.6 线程内幕1 E4 M/ W3 y4 v" m
6.7 C/C++运行库注意事项$ L9 p$ I# q0 D( [. e2 x, v! B
6.7.1 用_beginthreadex而不要用Create Thread创建线程/ M. E" o% D+ X
6.7.2 绝对不应该调用的C/C++运行库函数
( P, ^6 X* i8 V6.8 了解自己的身份5 u: T/ v% S8 q" n
6.8.1 将伪句柄转换为真正的句柄
4 N  P& Q4 c. q4 x2 b) G/ _9 ]' p& W3 X
, P9 L1 T  J1 x. q% S0 W第7章 线程调度、优先级和关联性
. _0 d; A) n4 m4 O" ?
) A0 S# G  @3 c( Y* e) x. e9 ~7.1 线程的挂起和恢复! s' P( _( f. N4 u
7.2 进程的挂起和恢复
8 A8 e) J% `! ]. S  |8 m7.3 睡眠
' P* _8 q( g- a7.4 切换到另一个线程
) `+ r+ I2 l8 Z! i5 B, `' n7.5 在超线程CPU上切换到另一个线程
2 c6 g0 \& D: s% S6 H7.6 线程的执行时间) Q9 {. |- W( \" D
7.7 在实际上下文中谈CONTEXT结构
9 E' `- ^! C" }% G( L7.8 线程优先级
7 }2 z* N4 r9 N' y7.9 从抽象角度看优先级
& {" G6 ^: d4 R/ g3 m: g7 ^5 B5 P! x7.10 优先级编程$ z; @# H/ F1 B0 G) E: q' {5 w
7.10.1 动态提升线程优先级
1 v' o1 v: w) M2 g$ n7.10.2 为前台进程微调调度程序
& y1 r/ ?. U" T1 b8 v+ y, n5 U7.10.3 调度I/O请求优先级
, J: Z- N) T- l/ I+ N0 U7.10.4 Scheduling Lab 示例程序: s8 H, Y. m) k& d7 s2 n
7.11 关联性1 t1 n$ i* b7 g& r, l. m

& g; d- K, I$ I- f4 y& \5 x+ I第8章 用户模式下的线程同步
% Q) |' n# X1 q! B5 n/ e: g& h! {1 \; \4 X+ |8 E( V
8.1 原子访问:Interlocked系列函数6 [8 z9 X& G0 i' s
8.2 高速缓存行
* C( j  h' X# _8.3 高级线程同步需要避免使用的一种方法& V# _/ c! y1 m/ q+ M6 d/ O
8.4 关键段
' h8 y6 i7 J3 b0 y' T8.4.1 关键段:细节# I) d' s% ^% M# E! N
8.4.2 关键段和旋转锁
) V+ t" r" y) A; r9 D( B+ A$ k8.4.3 关键段和错误处理) ^5 M2 E% @: @9 F) w
8.5 Slim读/写锁$ p' ~6 X2 \7 F  l: ]
8.6 条件变量
- \# }$ `. I" ]- n8.6.1 Queue示例程序
2 x( D$ ^! U# n3 x3 P8.6.2 在停止线程时的死锁问题
+ D3 S& j6 y# Q# [8.6.3 一些有用的窍门和技巧
5 a! K& i- ^( N* E- n' ]1 J; A" u* K6 a( W3 e, Z* t6 c8 {
第9章 用内核对象进行线程同步% s3 J- d  T* V. K3 b0 }+ H6 F2 p
7 W& C0 O! G5 l# {; b' Q; L
9.1 等待函数4 i2 D2 m* a3 h; G0 c( a' a
9.2 等待成功所引起的副作用
& V( c3 I, i. v9.3 事件内核对象' W! B& y6 S0 u# g+ t9 m
9.4 可等待的计时器内核对象
9 X6 F; K5 i* W4 o/ c. b9.4.1 让可等待的计时器添加APC调用! ~; K* X5 l% v! v0 G
9.4.2 计时器的剩余问题8 @6 O# ~" ?- J2 F1 [6 g
9.5 信号量内核对象
' T' G. L' g& ]9 o2 D7 M9.6 互斥量内核对象
" u3 |1 h0 R- @1 x5 _- r' G9 \9.6.1 遗弃问题
& f0 t1 e4 ~5 v# M9.6.2 互斥量与关键段的比较
' _. Z- j/ f3 S1 g& L9 e( f2 H9.6.3 Queue示例程序
/ Z# @6 m  ]7 j9.7 线程同步对象速查表9 a8 u1 ~3 A% k0 k. G* }
9.8 其他的线程同步函数
( K3 W# Q) a3 j( }' m+ ~9.8.1 异步设备I/O
( @- ^$ `6 ~3 c/ L$ v9 E0 U9.8.2 Wait For InputIdle函数9 K' M7 ]" O) n* @! [4 ~
9.8.3 Msg Wait For Multiple Objects(Ex)函数: _  a8 _0 F, |$ L
9.8.4 Wait For Debug Event函数, N' [2 j5 f5 o5 _
9.8.5 Signal Object And Wait函数( J$ c8 ]1 k% c2 A/ j2 ~
9.8.6 使用等待链遍历API来检测死锁- S9 [4 K0 d- K  p7 k/ a; [

; n5 \" Z- {7 J( x$ F6 V第10章 同步设备I/O与异步设备I/O
$ k& K" o# }. R
& v' Y9 J. v3 P) {10.1 打开和关闭设备细看Create File函数
, }0 |2 g/ x: E7 ^; `10.2 使用文件设备
' i9 ]+ p. J- T' ~2 i7 n  K' K10.2.1 取得文件的大小3 B' y: a3 ^  r6 }6 h4 n
10.2.2 设置文件指针的位置3 ]- I# f1 B: e6 @
10.2.3 设置文件尾; w. E7 Y# O  D" @/ k: U
10.3 执行同步设备I/O
! m- a+ S" M9 K# s9 V& `10.3.1 将数据刷新至设备8 K) N' d) [+ K7 ~
10.3.2 同步I/O的取消
3 P! M& L* g9 Z2 B* B10.4 异步设备I/O基础- I; z+ s- [% o1 k$ r0 r
10.4.1 OVERLAPPED结构
- g9 m: S, A# g) h$ h) t- `, _10.4.2 异步设备I/O的注意事项
+ l  R6 m0 G4 E- b) C- M10.4.3 取消队列中的设备I/O请求
2 ]4 A+ C: M+ g10.5 接收I/O请求完成通知
- d/ q9 D! H" P& ?2 x$ i4 m6 m8 K+ d2 z10.5.1 触发设备内核对象; T9 M, s9 h) Q5 j/ m
10.5.2 触发事件内核对象
- d& H5 p- n) a0 s! `3 o10.5.3 可提醒I/O
3 k6 ~2 T6 P, |) g10.5.4 I/O完成端口+ g* G) X1 C% V/ t+ \
10.5.5 模拟已完成的I/O请求
$ O; t3 c; J% ]; q. H, C# V- R( w- g0 A" a
第11章 Windows线程池) I/ N2 L- A, H* K

) U3 e: M/ b4 }/ L; u- C11.1 情形1:以异步方式调用函数  u, e# N: x1 D7 {+ Q3 g7 s5 O6 R
11.1.1 显式地控制工作项
& z! X4 m( [/ d) t) e- _11.1.2 Batch示例程序( b) O& Y; V! k  k: s  e
11.2 情形2:每隔一段时间调用一个函数8 F. `7 g0 d( \/ p$ a0 G2 {. R) |
11.3 情形3:在内核对象触发时调用一个函数
7 ^9 U) L$ x$ u1 J11.4 情形4:在异步I/O请求完成时调用一个函数
- p3 j' I  X/ v( [11.5 回调函数的终止操作
7 k+ p% k5 a  v11.5.1 对线程池进行定制* k  k6 G1 ~$ @0 X" B6 N9 ^
11.5.2 得体地销毁线程池:清理组5 _4 R" v; a. Y4 Q1 C& |, _
3 `& Y' z: u$ a' I5 \; ]
第12章 线程5 z' s6 L. {1 f; P
+ @; e+ C7 q+ w5 {
第Ⅲ部分 内存管理
& T; m1 P$ c; f8 u7 K0 f5 `2 _* ^( u) N  x3 F7 n
第13章 Windows内存体系结构
: i% z6 H5 A" d" w. q; H; P% ?! _  z) o' h
13.1 进程的虚拟地址空间
; c/ b+ y7 E: ~: ]1 |2 T13.2 虚拟地址空间的分区
* J- T/ K, v- _" D. l, Q1 h13.2.1 空指针赋值分区& `& m6 n& X& b0 d, n* `
13.2.2 用户模式分区
' E# r/ X( C8 a13.3 地址空间中的区域9 w" J. u; d* U) d8 O
13.4 给区域调拨物理存储器5 [) z  W, ~- M% L' {& n
13.5 物理存储器和页交换文件: L$ ]! O8 v4 T# n5 \2 b
13.6 页面保护属性- H! P  [& q3 Y( G+ n
13.6.1 写时复制
/ \+ h6 U+ |  Z4 f) {" L13.6.2 一些特殊的访问保护属性标志! S& `7 d) @3 M, x5 V
13.7 实例分析' q/ D/ j& V5 f* I
13.8 数据对齐的重要性
9 P9 C% S: n# {% B3 o: v
) h7 |# w2 r7 A& ^1 ]第14章 探索虚拟内存- l: @. s, K) ^8 s2 H
' z) c* s$ I' a, n% g% ~2 U
14.1 系统信息7 W6 s" O" y2 Y- n7 m
14.2 虚拟内存状态
; c, e2 i+ T4 P! i6 n" [14.3 NUMA机器中的内存管理
! D/ l: P1 A' C, }14.4 确定地址空间的状态
2 R& ?* ^2 n; O6 }- x% z14.4.1 VM Query函数  O1 t% V/ T  U  t
14.4.2 示例程序:虚拟内存映射6 \; q, s1 p7 A# _6 k( b

, e7 Q' h) W0 F/ {; C第15章 在应用程序中使用虚拟内存0 x9 |$ \0 I7 ]% X. v! c* e- @( Z

% V- C; |; {2 T" D) ?# ^8 U4 Y15.1 预订地址空间区域% @4 p$ A. p! h8 U0 e
15.2 给区域调拨物理存储器+ L6 d8 j/ k& R% R$ b' W" [3 I3 \
15.3 同时预订和调拨物理存储器( [' ?+ Y6 Q0 O, N; u9 R1 H' [% j- p
15.4 何时调拨物理存储器
5 E; Y1 s0 y0 C8 Y% o& b15.5 撤销调拨物理存储器及释放区+ d2 K' o  U' G7 n5 m; D) T
15.5.1 何时撤销调拨物理存储器
- C" E/ A5 B5 w! k15.5.2 虚拟内存分配示例程序5 U- q6 D8 `# ~" C4 k1 d
15.6 改变保护属性
& Z; ^' m, P2 s15.7 重置物理存储器的内容
  F* G' n6 L4 B, q; x0 W15.8 地址窗口扩展
: e% \1 V- V3 G* A; O* y. X( M3 J" A4 k% c: O: r* G
第16章 线程栈# A. g7 a, p5 T  ~1 r

+ \+ J- a/ }( k' P! v2 G16.1 C/C++运行库的栈检查函数
: F  u* K( L3 l3 ?, L4 @16.2 Summation示例程序; k- u& q/ v7 a$ ?$ c. w0 ]

& A" C8 J0 a! b& k" x! q& `第17章 内存映射文件
0 a. N+ K/ U4 V8 K! j" l4 g1 J
3 ~3 E5 {. c. g# C17.1 映射到内存的可执行文件和DLL! p( U, U& C* o
17.1.1 同一个可执行文件或DLL的多个实例不会共享静态数据6 K7 F( L& c" V  t* s/ |
17.1.2 在同一个可执行文件或DLL的多个实例间共享静态数据' y6 ]. X! i% X0 x+ A
17.1.3 Application Instances示例程序- L1 c4 b. d- v' r9 p7 u! s
17.2 映射到内存的数据文件% j5 \5 b$ E3 O  j( x
17.2.1 方法1:一个文件,一块缓存" G+ c+ v" W2 z
17.2.2 方法2:两个文件,一块缓存2 Y7 S5 x9 n4 C
17.2.3 方法3:一个文件,两块缓存
% `+ G( X' i/ r# v4 q( [17.2.4 方法4:一个文件,零个缓存
$ c! b- G% A) \1 ?17.3 使用内存映射文件
6 G) L0 l6 P+ h  {& E8 k3 \- X8 ~* h17.3.1 第1步:创建或打开文件内核对象! `3 i- m9 h0 c1 l" [' ~) B
17.3.2 第2步:创建文件映射内核对象" P0 E8 i4 y% @
17.3.3 第3步:将文件的数据映射到进程的地址空间
/ K9 E, W8 F- V- e17.3.4 第4步:从进程的地址空间撤销对文件数据的映射/ Z5 k% C* X- P+ M% _) S7 }
17.3.5 第5步和第6步:关闭文件映射对象和文件对象
1 `: U; t% Q2 g17.6 File Reverse示例程序, U$ h( h5 G; B4 o9 [4 v3 F
17.7 用内存映射文件来处理大文件3 G' b" l: X" k( z& u" Z
17.8 内存映射文件和一致性
! Y% ^( f( n& k: K5 F2 Q2 M17.9 给内存映射文件指定基地址+ M0 e2 y7 ?/ T
17.10 内存映射文件的实现细节
1 K2 M/ a# N3 u* c7 g7 Q% @- @& D+ L- U. x& s" d' O# m
第18章 堆$ p% N7 S2 o6 O

3 ^$ z% W  _7 l) M' T18.1 进程的默认堆
$ W3 s! L, D$ ~$ C* T18.2 为什么要创建额外的堆
+ h8 ~! g: y+ R/ m18.2.1 对组件进行保护
. c* d. M: a0 z# `( K; [* s; f18.2.2 更有效的内存管理
3 x6 e; o+ n' ?9 M% W( J18.2.3 使内存访问局部化2 a/ \+ x1 ~* }9 x6 x
18.2.4 避免线程同步的开销
4 G$ w# n( ?# C9 A6 ?  B18.2.5 快速释放
) H% [5 f* w* H/ {! c18.3 如何创建额外的堆
& I+ r3 y2 M$ E3 t" V- G" R18.3.1 从堆中分配内存块! W. O. U9 v3 ~
18.3.2 调整内存块的大小
; h. O( C- j( ?6 o18.3.3 获得内存块的大小& n4 ]0 c- e* i; r4 F) M1 f- \
18.3.4 释放内存块
6 D' y' y. ?# x! z$ r18.3.5 销毁堆9 D# G/ t1 B: p( U4 R: J, T% c
18.3.6 在C++中使用堆
' x& [; h/ j1 h+ I5 \( K: q18.4 其他堆函数
/ _5 q9 c/ y$ {9 H# }) i3 x: y+ F1 g8 Z7 H
第Ⅳ部分 动态链接库$ v+ F/ {- a# g) A! F8 N

+ m, |: U, H" j; z0 s! Y  m9 d' z, m第19章 DLL基础
2 H4 G8 E. O: L; _0 Z( M
3 R6 O* X. U0 c19.1 DLL和进程的地址空间
  V7 o$ e" `# F- P2 s, c$ b19.2 纵观全局
' `# j% e+ E- g% a19.2.1 构建DLL模块
! r4 ]! b/ a/ H19.2.2 构建可执行模块7 O% E: R% {) R5 P" W$ k( {" u# F
19.2.3 运行可执行模块
1 `/ J4 `3 ]& V# C! C
8 |1 t5 R0 `# B5 h* P* G# V第20章 DLL高级技术  A/ o) k- e3 i% l- R/ \7 B
! V4 v* p, ]& A' ~" p
20.1 DLL模块的显式载入和符号链接
: E. N; B* _2 A# Z& @, t20.1.1 显式地载入DLL模块( c$ d1 [, g) m& ?  r+ b% c' ]  Q
20.1.2 显式地卸载DLL模块
$ m; j: w% _! J# l, b4 R8 F1 b20.1.3 显式地链接到导出符号
; v3 d+ |4 a# h( Z0 O" e  y2 E/ s20.2 DLL的入口点函数7 B, E$ D8 w" i1 Y
20.2.1 DLL_PROCESS_ATTACH通知9 q& z( h, p( N% {, b/ O9 |
20.2.2 DLL_PROCESS_DETACH通知/ H1 I% Y; t& u0 E
20.2.3 DLL_THREAD_ATTACH通知
2 o6 e( z, `) P% l+ P7 R/ k20.2.4 DLL_THREAD_DETACH通知1 L; A0 T5 I. q" @
20.2.5 Dll Main的序列化调用) d! b  \. p; @; e7 R" U
20.2.6 Dll Main和C/C++运行库/ U' j& B. U# A# W" ]" k
20.3 延迟载入DLL
! A! {' L. Q6 n3 i# P$ d20.4 函数转发器
/ h/ K# X; i0 a5 l6 `, `' f7 v! u20.5 已知的DLL
3 e6 C# N) @2 M4 p1 ]8 h+ T20.6 DLL重定向7 U& ?( b0 s) u5 Y( [; S
20.7 模块的基地址重定位6 C0 r1 l" U$ X% U8 q& k& Z
20.8 模块的绑定# F% ^5 @! w/ P3 n3 Q/ w3 E
" L4 R# |. _1 Y+ t# p  v( V' h5 S
第21章 线程局部存储区
! W% K. j3 [6 v, j1 [
' d0 d- |9 P3 ]) x9 }0 ^21.1 动态TLS
6 q5 ]0 p; w: l/ h4 f  \21.2 静态TLS05 p) Y& Y2 j' @0 w! z$ ?
- w0 L0 _, Y4 g& T* b: W4 s/ |7 F
第22章 DLL注入和API拦截
% o0 |$ v9 W5 ?* k7 t- u
) J. V8 R7 a* h0 h* q: N' D6 }! e22.1 DLL注入的一个例子+ A4 s/ M- k( h' O# s5 |
22.2 使用注册表来注入DLL
4 K, a0 j$ S" Y6 ~  M; P4 }' O22.3 使用Windows挂钩来注入DLL
) t# L* P  l  C2 _; g- {22.4 使用远程线程来注入DLL5 ~' u1 b6 U* O' L0 o6 ~
22.4.1 Inject Library示例程序1 ^( o+ M) b* n8 t* Q
22.4.2 Image Walk DLL* p6 N6 ?* f8 p( M0 F$ n0 V: D
22.5 使用木马DLL来注入DLL! X& O1 f2 C5 v% d- V3 M
22.6 把DLL作为调试器来注入
6 G) a1 ?6 o/ C3 W: N' `$ o. P22.7 使用Create Process来注入代码2 b( W, v' P4 j) }$ X- S' J; o. k
22.8 API拦截的一个例子9
, [: B- T: I1 x' N' f; w22.8.1 通过覆盖代码来拦截API0/ ~4 _! Q3 z! V: A
22.8.2 通过修改模块的导入段来拦截API
) m3 O9 q  R! q( h2 o22.8.3 Last Message Box Info示例程序2 }* ~" A/ {- l/ j

' g& X' ^- ]: u& n0 q第Ⅴ部分 结构化异常处理6 h0 h# `2 H; I+ A& f# d4 L+ B

( g% H% L6 q( F% @! E" G" d5 K+ g第23章 终止处理程序
% e( E" P8 [9 v) D8 R7 L" Y' U4 [7 R; }3 C* w6 t, w/ \8 X
第24章 异常处理程序与软件异常
5 l4 e" l. J  ]# N8 }
. X* d1 l0 M4 m4 y+ g9 I! `24.1 通过实例理解异常过滤程序和异常处理程序' e" F, M/ i6 @; _# }0 P8 c
24.1.1 Funcmeister1函数/ T& m; H; F. U& R0 v) N7 \. c
24.1.2 Funcmeister2函数
; ]* U( G  U* N  Y! l/ J' P6 D& ]5 z+ X24.2 EXCEPTION_EXECUTE_HANDLER1
  z  J7 H' @1 |; L1 ?1 Q24.2.1 一些有用的例子
; U7 q4 j+ M4 f) U24.2.2 全局展开  L+ j1 ]" k0 g
24.2.3 停止全局展开" D1 L6 V% T8 S* y0 Y
24.3 EXCEPTION_CONTINUE_EXECUTION, V9 y6 Z; y3 U" m
24.4 EXCEPTION_CONTINUE_SEARCH0
1 a: K& B' K4 N- @0 c24.5 GetExceptionCode2% [. E4 G* X2 `% d0 d7 r
24.6 GetExceptionInformation65 {: h3 o* I$ `- a& L
24.7 软件异常
2 H$ M6 i; {4 j" s! g" ^" Z# |* u2 o. @5 l8 N; R
第25章 未处理异常、向量化异常处理与C++异常
" k- H; L# ~! \. _- \# O
/ [0 y6 e6 g0 O8 S% d25.1 Unhandled Exception Filter函数详解$ l+ n: N" Y8 G6 U. ]
25.2 即时调试4 w9 m( C: i4 u* ?
25.3 电子表格示例程序
, A: ^( D( x# B# Q' T5 u/ Y25.4 向量化异常和继续处理程序
+ _" O# `* S6 U5 H; V/ I25.5 C++异常与结构化异常的比较
- ?! m0 z/ B# g9 l  k  O2 @25.6 异常与调试器* `7 l* p8 w# [  R2 f8 k* A+ v

, b# k" [+ s5 @7 ?. s第26章 错误报告与应用程序恢复
( I6 N7 n1 K) v3 X8 N! i* x" _0 _# L# A. u9 `' N+ Y8 n) k
26.1 Windows错误报告控制台3 E5 @- B8 Y6 h; K0 {; B
26.2 可编程的Windows错误报告- f* a4 m0 J  E3 Q; r6 p6 Y% D( R
26.3 对进程中所有的问题报告进行定制
' e, e0 y5 Q4 h$ n- J  o26.4 问题报告的创建与定制
' w( ~# R9 D* o, {6 S26.4.1 创建一个自定义的问题报告
' ?5 s: |6 t7 l26.4.2 设置报告参数:Wer Report Set Parameter
" M+ l  g  k" o26.4.3 将小型转储文件放入报告:Wer Report Add Dump 8
5 |+ x& G/ ]" P26.4.4 将任意文件放入报告:Wer Report AddFile 9! ~1 \' _. B' `" |/ K
26.4.5 修改对话框文本:Wer Report Set UI Option
" r7 p" w$ A4 T- w" _26.4.6 提交错误报告:Wer Report Submit " J: B9 K0 f! y7 B
26.4.7 关闭问题报告:Wer Report Close Handle, i% C) V4 j# @) G- z
26.4.8 Customized WER示例程序) K" J. ~' M5 `& l3 x
26.5 应用程序的自动重启与恢复* Q) A8 t; D6 l" _: q$ w% F# \+ [
26.5.1 应用程序的自动重启( b; J% P; @5 ?$ o, j8 _( n
26.5.2 对应用程序恢复的支持
7 l& Q' ^$ L9 t: a& U) i# q
# t2 Q' J! Y$ T. `, ^第Ⅵ部分
+ ?. x5 h- w6 w+ r- Q; B- n% y9 g- Q5 d7 b( R3 J0 b5 E" T
附录A 构建环境0 Q; r) `% b$ m! a" o( F$ H

  E, Y( M" w' z! ~$ Q% c附录B 消息处理宏、子控件宏和API宏
% ~- H4 e. c  ?0 @0 Z9 Q9 T7 F
: I# A9 E# Q+ w' T索引
# ?4 a. L/ H( J9 D
2 H7 p/ h" n% P' o- z+ L3 E
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-6 21:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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