鱼C论坛

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

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

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

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

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

x
TB1tChLKpXXXXbnXFXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

. s( z7 K# z) Q
' t9 G! ^! R6 m/ w& F; q书名:《Windows核心编程》(第5版)
8 J( `, \1 B7 t  Y9 f: H( y; o作者:Jeffrey Richter,Christophe Nasarre
  Y# `1 ]. A9 k# I; ]( e+ R译者:葛子昂,周靖,廖敏1 c- l- o- Y& p" T5 S
出版社:清华大学出版社
2 K  }+ V" d( j出版年:2008年9月1日(第1版)
; T9 t1 d+ o6 t定价:99.00元8 w/ @7 T4 B, \4 S
装帧:平装8 h1 k% r; {. ?# @; F2 |
ISBN:9787302184003' A$ f1 q) T( X4 |) W
0 ?$ O4 r3 Y9 K& t. R
购买链接:
# r5 v# x/ \7 I
' h' s% Q3 {1 ^5 U# t4 ?- @

# K" b* _; ^4 n2 \5 `亚马逊 -> 传送门
( P, k; r6 U5 ^
$ l5 C1 |6 @5 z1 i当当网 -> 传送门5 J$ T" M6 u" d
7 U% G6 @, r( L% f4 R) |
京东 -> 传送门
" q5 s. b  F  U* p  N( m$ E) ]4 {6 Q" i# F
天猫 -> 传送门$ T% T' }. p8 ^. S  N9 i- o  m
' a: h% K0 T4 z  q2 y0 t5 W
8 Q5 r& m! e& A9 I
内容简介:/ s6 ~# U3 T+ Z7 H' w; U, ~
  ?2 W0 B7 v# p7 _" L


# Y5 D7 c" ~4 P6 N" a《Windows核心编程》(第5版)是一本经典的 Windows 核心编程指南,从第 1 版到第 5 版,引领着数十万程序员走入 Windows 开发阵营,培养了大批精英。《Windows核心编程》(第5版)针对 WindowsXP,WindowsVista 和 WindowsServer2008 全面修订。主题广泛,内容丰富,讲解深入而精辟。透过这本 Windows 编程经典,我们可以在专家的悉心指导下,洞悉 Windows 编程精华,深入了解高级编程技巧,编写出高性能的 Windows 应用程序。9 t5 ~; h# n8 [0 h1 e5 X/ v  G
' |  P4 S8 n/ x. L( V& v
本书重要主题:' i7 R' I2 d' j6 v
  • 如何为 32 位和 64 位 Windows 系统构建和实现应用程序?
  • 如何新建和处理进程与作业?
  • 如何调度、管理、同步和销毁线程?
  • 如何通过 I/O 完成端口执行同步和异步设备 I/O 操作?
  • 如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存?
  • 如何处理默认调拨的线程栈物理存储?
  • 如何为延迟加载、API 拦截和进程注入构建 DLL?
  • 如何使用结构化异常处理、Windows 错误恢复和应用程序重启等机制?
    / W; e$ X: S; p4 ?4 D8 N

  y6 u  j7 r3 L1 S  c
$ y8 }0 u+ `5 A$ q" U5 K目录:
4 s8 v+ m8 h/ O# C; s' [+ g9 A) `  n

  W* G  N: m) U6 O
第1部分 必备知识
! T3 F4 F( M" D9 O2 T  x4 Z" e6 ]' u8 `! G; k' ~2 ~. d. O
第1章 错误处理0 a2 o! [5 j: z7 K- V

6 e5 y' o( w9 D& t$ H1.1 定义自己的错误代码
. x7 w& W6 `, X3 G/ x- Z$ }. z1.2 Error Show示例程序
& H6 E: k+ R% R4 e& h% y5 k. s. D2 k0 K0 ^# ]4 f
第2章 字符和字符串处理' n) Y: H6 N, I6 }

+ a1 _; n3 G/ _, J$ ^2.1 字符编码
1 X( T* J0 \8 w# U5 h2.2 ANSI字符和Unicode字符与字符串数据类型
9 ?! |" m; d8 [( r  U5 |) B2.3 Windows中的Unicode函数和ANSI函数- h8 Z2 R' ]% c) Q
2.4 C运行库中的Unicode函数和ANSI函数0 N3 g4 ^: `8 |7 |
2.5 C运行库中的安全字符串函数
1 G1 i4 [7 P! |( g1 a# i2.5.1 初识新的安全字符串函数% Y5 Q' R7 S& u) Y6 Z- }( V
2.5.2 在处理字符串时如何获得更多控制7 `6 d% W' q. l  z( K
2.5.3 Windows字符串函数* [5 {$ Q7 p4 n; ^- M2 b( M6 ]
2.6 为何要用Unicode
% ~- I! m5 o7 B2.7 推荐的字符和字符串处理方式
1 A+ `# ^, z+ ^2.8 Unicode与ANSI字符串转换8 q+ {: C. p) o9 S
2.8.1 导出ANSI和Unicode DLL函数$ t( W% b, n. r0 d; Z5 K* e: g
2.8.2 判断文本是ANSI还是Unicode7 J  ~# H& x9 b8 C# q9 G) i0 e

' Y* G0 v5 n% H; F5 g  y第3章 内核对象
! i9 S! y2 P( s' o! |- l" p, ]% K6 ]6 ^) ]9 \
3.1 何为内核对象  B3 o/ n4 C7 y8 g$ l
3.1.1 使用计数
; A$ \, j4 v7 G6 }5 u* H; ?% K1 [3.1.2 内核对象的安全性: n3 h3 h9 T) g  L- W7 h
3.2 进程内核对象句柄表
, J* K1 c# j1 Z! z- i& A% M: A3.2.1 创建一个内核对象2 m1 f# A% \( a; S: ~* |1 s
3.2.2 关闭内核对象
7 Q. E" m3 `! T+ {# s3.3 跨进程边界共享内核对象
& r% R9 ]( F  h* w6 p$ {$ `- J3.3.1 使用对象句柄继承2 W6 {- G( Z5 s8 y% L7 {% y
3.3.2 改变句柄的标志; d% J+ B+ L5 f4 F: m) t6 f
3.3.3 为对象命名
1 U, @, V9 w' m8 o5 }1 P3.3.4 终端服务命名空间
% a+ I5 P) m! c( {8 H0 \- f3.3.5 专有命名空间
8 L' ^+ P; V- q' e! a3.3.5 复制对象句柄( f1 J1 w" m: o# J$ U
5 p% G9 q* o. K
第Ⅱ部分 工作机制
# E7 u0 _) b* o( I
" ~1 u6 T$ F) x+ w( v4 p6 z第4章 进程
1 U  c0 K5 K& O, i8 _$ D6 j
7 O4 B. M5 w8 Q4.1 编写第一个Windows应用程序
+ S' F2 Z# Y7 B9 B3 j1 R0 n4.1.1 进程实例句柄. Y1 Y+ T  v) P% V# t
4.1.2 进程前一个实例的句柄+ _. F: V7 y7 P( k& |  y1 R
4.1.3 进程的命令行
/ c$ @; B8 f0 ]4 F4.1.4 进程的环境变量
# d# I" y( h- y9 S$ o4.1.5 进程的关联性
2 [- L, l5 o7 B8 e; m6 @$ B- j( p+ B4.1.6 进程的错误模式
! l5 Z% A# ]% q0 P4.1.7 进程当前所在的驱动器和目录
6 T, l0 u/ y: ]2 e4.1.8 进程的当前目录# u+ G4 n7 I) S; G' v7 c
4.1.9 系统版本
/ X$ X( N& a6 U1 S& ]4.2 Create Process函数9 i# n  O  G1 v" H7 I7 C
4.2.1 psz Application Name和psz Command Line参数
* u  J8 x6 g4 z- Y) O5 {* v/ ?. o# S4.2.2 psa Process,psaThread和bInherit Handles参数
, w8 n' X. l5 i- E1 K4.2.3 fdw Create参数. }, R3 ~8 u. ?1 b
4.2.4 pv Environment参数
9 M% T6 Z! G, r4.2.5 psz Cur Dir参数
! U$ C& x" C! x: g" H4.2.6 psi StartInfo参数
4 x% S6 ~. G% B4 V+ R% b. E2 X4.2.7 ppi ProcInfo参数! l/ q& z" e4 R0 e* }3 r
4.3 终止进程
; m% L/ w5 x; \4.3.1 主线程的入口点函数返回
1 ?; g$ b* ]4 t: O0 G4.3.2 Exit Process函数
' C" G$ h* w, F" h, z: T# O4.3.3 Terminate Process函数
8 x" g( N" s$ a: m4 _" w4.3.4 当进程中的所有线程终止时
: ?& v6 N6 ]$ S% W4.3.5 当进程终止运行时" F* p' n7 Q' N; v% g  C# r
4.4 子进程
0 n" k- y+ f" K4.5 管理员以标准用户权限运行时
: d: c0 s+ C  J  A8 j; u9 o4.5.1 自动提升进程的权限
' \" W+ j' j( {4.5.2 手动提升进程的权限  J$ H9 r7 [! K* b1 x# x; Y# n6 R+ ?
4.5.3 何为当前权限上下文
# a& U0 A+ M5 S7 R% o) K6 u$ l4.5.4 枚举系统中正在运行的进程
  k. D7 F. Y$ Z  Q1 b5 \; ~4.5.5 Process Information示例程序1 Y8 K% o& M/ M4 B% j. ^, B

3 q; g% K. R0 q$ [1 ]/ w第5章 作业' q2 R) j4 K. Q

% K3 ~5 x( D5 p$ {2 R1 `6 q" |5.1 对作业中的进程施加限制  o, k% V$ H- A
5.2 将进程放入作业中. F  |% _) \5 N  S( z
5.3 终止作业中的所有线程查询作业统计信息
! H( X7 [7 k  {( M- {) W% v5.4 作业通知
  b. s+ m) g. Y0 Q) W( c" s7 q5.6 Job Lab示例程序
% ^1 N3 T* T0 |9 ~5 {' |  d6 `
第6章 线程基础
# ^7 f( u+ H2 t' M, }# Q9 R; S
; t- H6 Q9 I* L: }6.1 何时创建线程/ h# f' M+ R' u# S
6.2 何时不应该创建线程) X6 b8 n2 I" ~7 h" l
6.3 编写第一个线程函数, q7 h( K8 e+ @" Z  Z' q2 m5 |
6.4 Create Thread函数
# u, f! T  M$ W0 `+ X# p$ V6.4.1 psa参数
/ j# z3 ^1 B4 a2 D/ u6.4.2 cb Stack Size参数
, p0 m# y3 |0 ?- v6.4.3 pfn Start Addr和pv Param参数
, ]2 L) {+ g" h* A' X3 [( S; e5 f6.4.4 dw Create Flags
6 Q$ Z- k) h6 L6.4.5 pdw ThreadID7' s. ~& p) }' I& Y6 S; a
6.5 终止运行线程
7 N- O6 ~7 e3 o: `& ]/ {/ [6.5.1 线程函数返回" J3 N& l8 ?. I/ V* `% ]
6.5.2 Exit Thread函数
9 o1 r0 g' t+ ]; ]! v6.5.3 Terminate Thread函数
7 U: _4 c7 K' |6.5.4 进程终止运行时
( X2 w; q9 z# f7 ~6.5.5 线程终止运行时8 U8 X! K$ S6 j: ]/ B
6.6 线程内幕
2 e1 M" ?' C1 F$ m( R+ [6.7 C/C++运行库注意事项, Y; T9 A) z1 X. O
6.7.1 用_beginthreadex而不要用Create Thread创建线程2 V$ Y2 L+ ?7 H5 O5 Q! H) ~! d
6.7.2 绝对不应该调用的C/C++运行库函数
3 T6 S1 v& Q/ f# I! Y) b6.8 了解自己的身份1 F+ L& y: G( t
6.8.1 将伪句柄转换为真正的句柄
* U. i; H/ Q& h& d$ O/ O9 x* f5 t) t# G' M6 l# o+ _
第7章 线程调度、优先级和关联性
1 ?" r' V! Z# e5 w3 M+ x: h5 \- p+ v7 O# b9 t" Z# @0 w% f( T
7.1 线程的挂起和恢复6 n  I5 x" z1 R) ]  E& x
7.2 进程的挂起和恢复+ [3 b! A& v' U
7.3 睡眠9 b( ?5 C3 v5 D( s8 i1 e6 y3 b$ b
7.4 切换到另一个线程
. I( U) h( ]& L. n" x" T& ^7.5 在超线程CPU上切换到另一个线程$ [) q* d- G2 [1 V) [) k" F4 b0 W
7.6 线程的执行时间
4 g/ ~; ?0 y9 f  r( t6 O0 z. b" o7.7 在实际上下文中谈CONTEXT结构% }" Z! \$ j7 F9 k9 Q7 H
7.8 线程优先级( P/ V9 P# q; b# U
7.9 从抽象角度看优先级
  V3 e" U$ q/ g7.10 优先级编程
) c  Y, I# U3 {4 F$ q" C7.10.1 动态提升线程优先级
  x' ?: |/ k5 Q7 l' \, ?7.10.2 为前台进程微调调度程序: f( d. V8 p" s; \
7.10.3 调度I/O请求优先级
7 l- K9 b9 P1 f! m4 W. ?$ @4 F  K* V" A7.10.4 Scheduling Lab 示例程序- o% _% W9 @  T8 A9 [( Z- p
7.11 关联性* O, }. d- L' e2 G6 w
4 M% u# W/ z4 \6 J: q! A
第8章 用户模式下的线程同步6 j; T+ j3 D) s1 i9 A+ b* o
0 P7 \& |$ L1 L1 Z$ ]' @
8.1 原子访问:Interlocked系列函数
' k$ o: y1 s- g( A) J8.2 高速缓存行9 ~; Y4 ~) ~' ]4 b$ R9 i7 W
8.3 高级线程同步需要避免使用的一种方法7 n0 P( M+ }' V9 ~+ n1 _
8.4 关键段
2 K& |8 D$ D6 w" U2 F( X: W9 \8.4.1 关键段:细节
8 I" i# ~/ j$ l/ ~9 @; `* g, d8.4.2 关键段和旋转锁2 J: q& @: d# P
8.4.3 关键段和错误处理
  T! A$ x/ U. u' t4 }8.5 Slim读/写锁  q) a  D. v4 \- P  E
8.6 条件变量
: |* S7 K; H2 c: p8 T8.6.1 Queue示例程序
* p6 b8 a% a, h8.6.2 在停止线程时的死锁问题
2 J5 b; m7 b/ a4 }. C8.6.3 一些有用的窍门和技巧. S6 x- R+ n/ ^5 z; }+ {
0 D6 |  m( f! R6 ?- }
第9章 用内核对象进行线程同步/ d% D, k2 s6 P% q3 k5 s2 k

3 @! q' V2 \1 y: T8 G$ \3 O9.1 等待函数9 X6 P4 Y6 ]. G) i# O# B, u
9.2 等待成功所引起的副作用8 S3 Z0 {& p% O2 A  N! h+ e
9.3 事件内核对象1 G5 p! N5 o2 n% g: \5 k# L2 _* ?
9.4 可等待的计时器内核对象
  B' b; s7 n6 o) c' ]9.4.1 让可等待的计时器添加APC调用
% q% h% v: g3 q3 p7 ^# J7 `3 \5 L9.4.2 计时器的剩余问题
0 s/ E: s% c; t9.5 信号量内核对象8 i/ N! ^. f, u4 P2 n) V) Q
9.6 互斥量内核对象! A0 Y$ \: z" j  A# G% Z
9.6.1 遗弃问题, H! ]7 R9 d& Q
9.6.2 互斥量与关键段的比较& g1 m! @) k1 X1 r1 T/ q* A- Z
9.6.3 Queue示例程序
$ M) U. f8 y2 r: I9.7 线程同步对象速查表
: m8 [% L2 z& _  g7 T9 B% V9.8 其他的线程同步函数
' m3 h/ d) Y' j0 f( E5 b9.8.1 异步设备I/O
/ k& e. p9 {2 ~! A; K9.8.2 Wait For InputIdle函数
' n) `8 c# s4 r- C9.8.3 Msg Wait For Multiple Objects(Ex)函数+ H$ d& L: D! c- O# j
9.8.4 Wait For Debug Event函数
1 N3 D  {6 W+ _) Z4 w! d9.8.5 Signal Object And Wait函数
! }4 V% L6 D3 ~9.8.6 使用等待链遍历API来检测死锁
3 Q; q. h$ a$ k8 K" V2 Z1 q# W3 ], C9 o9 O
第10章 同步设备I/O与异步设备I/O
, [4 }# O- e* _( f: w4 E0 Q
6 M" a* L7 x$ J1 s0 I) X+ W" [10.1 打开和关闭设备细看Create File函数! r  {) @3 I( v8 j# G8 N
10.2 使用文件设备
1 V6 G" u* ]# G10.2.1 取得文件的大小* U4 _  v8 Q% o3 f9 G$ C
10.2.2 设置文件指针的位置
# p" E4 {; `+ g/ t* u10.2.3 设置文件尾4 ^" d- F1 Z( k$ w! Q" ]6 D8 G
10.3 执行同步设备I/O. o3 D4 X2 u) }; p
10.3.1 将数据刷新至设备" T/ E( _+ g: r4 L( x1 a; Z
10.3.2 同步I/O的取消) F4 D: a' [7 D
10.4 异步设备I/O基础0 U9 J& B* F- b$ L* G0 L
10.4.1 OVERLAPPED结构
; X9 |1 O: l* N2 ]3 A+ G10.4.2 异步设备I/O的注意事项
; z+ S9 |* E8 p4 f10.4.3 取消队列中的设备I/O请求+ f! k6 m; P- a3 C
10.5 接收I/O请求完成通知
+ t2 p1 y) u) E% b10.5.1 触发设备内核对象( |! {" h% L( y$ x* d' w6 r
10.5.2 触发事件内核对象# M+ ]+ n. B$ D/ l" L% M
10.5.3 可提醒I/O
) x( d) P) ^5 ]" a' D0 k10.5.4 I/O完成端口
! h4 Y' [) `; }) J10.5.5 模拟已完成的I/O请求9 O( F: u+ W, O3 O

- G5 O* w( g# R3 A第11章 Windows线程池3 ]0 O! H; \% N7 T
3 P1 o$ k% k1 \( E- B; R
11.1 情形1:以异步方式调用函数& Y8 L1 a- O+ x, O5 Z
11.1.1 显式地控制工作项- ^9 B, U  ]7 c5 l' V
11.1.2 Batch示例程序
+ t8 u3 x5 C9 z5 h% ]; G11.2 情形2:每隔一段时间调用一个函数- s: q( ?0 Z0 `" R) v
11.3 情形3:在内核对象触发时调用一个函数2 F3 p- ]# U; v5 B0 ]8 y' M
11.4 情形4:在异步I/O请求完成时调用一个函数
& g1 y1 H( u& L% _/ |3 c/ L- R11.5 回调函数的终止操作
( K& K6 t: c+ `: z' V11.5.1 对线程池进行定制
! K8 D' n. {) A6 I( G11.5.2 得体地销毁线程池:清理组  p1 O6 d) \  t8 b* ]9 u0 U" ^
; ^! X/ m% a6 i0 @, S
第12章 线程6 `7 e/ f1 g& J
2 S" I; Y1 \; T5 W$ V3 ^
第Ⅲ部分 内存管理( I) \1 F( {' L* A& }
, E9 y) l) H' j0 z- _+ ]
第13章 Windows内存体系结构  q* F: |( K' n9 V; V( o
+ i; Q; z: e9 k7 ^# r
13.1 进程的虚拟地址空间
4 a: X5 N% d% m( }13.2 虚拟地址空间的分区
8 h7 N* @$ B3 C) r3 s13.2.1 空指针赋值分区
( D/ n2 n" J, F8 D13.2.2 用户模式分区
# H" l% b$ j" V1 f13.3 地址空间中的区域
5 a+ B8 b) f7 x" }" s13.4 给区域调拨物理存储器
4 ]& m- P$ m6 f0 D) `13.5 物理存储器和页交换文件
  O  G6 q9 k; E13.6 页面保护属性
; g  r4 p- l" X( N13.6.1 写时复制
: }- u+ `8 a1 B! O13.6.2 一些特殊的访问保护属性标志+ l& N! {0 D6 f4 ~8 w& G! ?
13.7 实例分析5 ^  \; {8 t4 U1 Y& ~, ?
13.8 数据对齐的重要性5 W" q/ M! p* Y7 U
4 W! M0 y+ u  B7 {* Q' w
第14章 探索虚拟内存# P# k' }, O# H0 l& v2 {! |

: ~0 t" o; [+ S14.1 系统信息
% r, k" ]5 u: Y* _- @14.2 虚拟内存状态9 e, e8 V7 \" x9 v8 c
14.3 NUMA机器中的内存管理8 J( v# @4 i: ^! j  i- w9 d
14.4 确定地址空间的状态( Q; v) T& i! ~6 r( \. S7 j
14.4.1 VM Query函数* N+ K# Z% [- r* J# g% g
14.4.2 示例程序:虚拟内存映射
" b# m! {7 q# H$ ?3 ?
- B$ o6 H: m0 Q3 U* ~: o6 U3 M第15章 在应用程序中使用虚拟内存9 k; n- t% p: s2 q. x2 {0 q
* J' l( C8 ~% O# j
15.1 预订地址空间区域! a. L7 O2 {8 y2 o" o$ h0 m, y
15.2 给区域调拨物理存储器
" ]8 @& @# f2 c; _15.3 同时预订和调拨物理存储器
2 S: J. \/ o) H6 R- |15.4 何时调拨物理存储器3 A5 ^: K# z# J0 a5 l
15.5 撤销调拨物理存储器及释放区
  E/ `; P" b6 ]; a! m15.5.1 何时撤销调拨物理存储器! D: o; p& B  s% e7 y+ O
15.5.2 虚拟内存分配示例程序% B" a9 \* ]) l' Q& o
15.6 改变保护属性
7 ]- {; Q" r: ^1 d; V' B: `8 B  ]15.7 重置物理存储器的内容
+ M7 Q4 \6 w- ]/ {15.8 地址窗口扩展) Q4 _: {/ w% x* B$ {
/ v  C" z' _# m
第16章 线程栈
$ d% h0 W$ k5 Y4 ~' x1 v- J& |6 {  ?0 {( l5 E
16.1 C/C++运行库的栈检查函数
0 g' H& i; z  H7 H! B: r! C1 q8 h16.2 Summation示例程序
. `. x) I  ~3 }1 D# f/ v/ p) J, n8 V1 A; Y( r6 j
第17章 内存映射文件3 D  @5 i6 U, \8 j
) U3 |; y( k( X8 Y' s
17.1 映射到内存的可执行文件和DLL& p& c& c8 d' h( D8 u) P4 v
17.1.1 同一个可执行文件或DLL的多个实例不会共享静态数据7 ]0 i0 m0 C# a- X0 |
17.1.2 在同一个可执行文件或DLL的多个实例间共享静态数据0 M8 f8 |. p) K- J% X) I! \
17.1.3 Application Instances示例程序
, v& }; w* J1 H, q+ ~; `17.2 映射到内存的数据文件
, C: l. n. h5 d: V- f( y17.2.1 方法1:一个文件,一块缓存
2 G5 M( T, l/ U. h$ @17.2.2 方法2:两个文件,一块缓存3 M9 ~' W$ _" `+ F; J$ T2 Z' U
17.2.3 方法3:一个文件,两块缓存; h$ L$ }8 h7 K0 S
17.2.4 方法4:一个文件,零个缓存
1 }+ [" H, p* _- @3 C17.3 使用内存映射文件0 e  c9 j: F! B0 E$ v* u+ U
17.3.1 第1步:创建或打开文件内核对象
. w- h2 r4 Z4 s, i" h17.3.2 第2步:创建文件映射内核对象4 ]' i+ ~# @. Y$ g0 c  Z, N# ?
17.3.3 第3步:将文件的数据映射到进程的地址空间8 d+ m1 N; K$ N7 \( p, a7 S
17.3.4 第4步:从进程的地址空间撤销对文件数据的映射2 m! O9 _/ |2 A9 U  _
17.3.5 第5步和第6步:关闭文件映射对象和文件对象" b. J$ P# @/ a+ _
17.6 File Reverse示例程序4 @  S( h0 a' x& |! N6 b4 B# w9 R
17.7 用内存映射文件来处理大文件
0 x6 Z  a: T" y, L0 r+ }: s4 _17.8 内存映射文件和一致性4 u' g! S2 C' J. O# ?
17.9 给内存映射文件指定基地址
5 Z4 |- f+ f# e; `1 X17.10 内存映射文件的实现细节
0 p: |( j& X8 t- d3 j6 g4 b6 h- y) ?8 Q" \2 O- @6 N
第18章 堆1 M2 ^+ I; x2 ^0 J. W* w$ I8 u

0 m0 W2 l+ c0 m# I) R18.1 进程的默认堆
; ~- Q6 H; L0 J4 n% I3 I18.2 为什么要创建额外的堆. B. ~( E2 n  W# z
18.2.1 对组件进行保护
! f. q6 a; n. e* x18.2.2 更有效的内存管理
: ^' Q$ x! a! s2 G18.2.3 使内存访问局部化) N& {  Q. c: L' _- S
18.2.4 避免线程同步的开销' }' D/ p. z# o2 L
18.2.5 快速释放
3 a6 z6 Q0 _, X# S7 q18.3 如何创建额外的堆' z3 f# n6 w; Z1 }, X: R* p+ E
18.3.1 从堆中分配内存块( t& T& d# ~9 g& E& ?0 q  m% f  ~
18.3.2 调整内存块的大小
8 k8 \( v6 D5 k! b, u+ }' x18.3.3 获得内存块的大小; b4 R' O  _4 B3 o+ |# s1 L
18.3.4 释放内存块# b' [6 K5 D# k4 B2 D  S2 {) S
18.3.5 销毁堆
4 j7 ~! K1 y8 m. ?18.3.6 在C++中使用堆' C% |. p5 Y" Y6 N: P
18.4 其他堆函数6 \+ S/ S8 g2 S4 h! H( c

* r5 B- f3 K& g' V第Ⅳ部分 动态链接库" _& e8 C2 A5 ]  D- U
7 p# {  F4 \4 ^% S$ i. a* K
第19章 DLL基础. q- B6 J. R  g

! z. ?  t7 r0 T/ ]2 l" ~* E' L" l19.1 DLL和进程的地址空间4 k- F8 p- g+ ]: _" H- ^
19.2 纵观全局
1 U9 d+ r. q2 h2 k+ r: `4 V19.2.1 构建DLL模块
( I) H' o! A# n* f! u: d9 x19.2.2 构建可执行模块5 y& E  \) O6 E
19.2.3 运行可执行模块- B5 Y# I+ l3 @- I1 F  C
% v( I( N9 x" V: c
第20章 DLL高级技术
1 H3 A7 H( p; Q8 F* H$ E8 ]6 z, e, c' h' K- C. f6 ^* b
20.1 DLL模块的显式载入和符号链接
6 s- f; n6 N2 }. ~8 E20.1.1 显式地载入DLL模块
/ N% y, X* u  |5 q20.1.2 显式地卸载DLL模块4 r6 }0 p4 \  ^
20.1.3 显式地链接到导出符号8 ^* F  |& C' M2 ?' N
20.2 DLL的入口点函数
! q$ g7 X4 C5 T20.2.1 DLL_PROCESS_ATTACH通知2 k1 s% C; S- d  X
20.2.2 DLL_PROCESS_DETACH通知- j$ [2 G9 I8 X1 h: W0 N3 @# R
20.2.3 DLL_THREAD_ATTACH通知& P0 i8 g, W+ Q4 E, T$ |
20.2.4 DLL_THREAD_DETACH通知* A0 W. a8 C1 M' O' W9 _; l9 @! h
20.2.5 Dll Main的序列化调用8 o' v& k4 G" a6 p* f, C) R) h
20.2.6 Dll Main和C/C++运行库
, m1 G" K5 [! N0 M: F+ x20.3 延迟载入DLL' f' G! ^8 b3 Q% q; h
20.4 函数转发器
: W( ^4 K; U+ Z8 r20.5 已知的DLL3 L4 i9 A0 L! D
20.6 DLL重定向
1 e2 B$ D3 `0 @2 n- p# Z% d20.7 模块的基地址重定位
+ V4 s' `& T" k- N20.8 模块的绑定. k- e- e  f/ O

6 [# I6 o, [, `( b0 V2 b# O3 W第21章 线程局部存储区
7 m9 y- c6 B3 |" R2 i" P3 d; q
- F  p1 _- O) \4 \' z21.1 动态TLS
) E1 _! ~5 t2 u21.2 静态TLS0
- @# K( t) `( Y+ Y( A9 x7 D
( x. u+ E, ~* t; x& m' k; m1 r) `第22章 DLL注入和API拦截8 t. N, O: k" [( x% B1 q( [6 p
0 a- u6 O$ k' {: Z2 ?  t* O+ p
22.1 DLL注入的一个例子
% I! w/ u0 S8 L& k; x22.2 使用注册表来注入DLL! Z; J7 T$ [# B$ u) x" u
22.3 使用Windows挂钩来注入DLL  O- N. S) b- T( b+ z' t
22.4 使用远程线程来注入DLL7 Q6 a2 x" n; B% U  F
22.4.1 Inject Library示例程序% }* s7 J# Y  ^0 w" s# {/ s) E
22.4.2 Image Walk DLL3 B# |) X3 i% f/ J
22.5 使用木马DLL来注入DLL) K+ j2 J) g( S4 g# A
22.6 把DLL作为调试器来注入
: T+ u+ t, i, n, p& T  F" ]0 r% U22.7 使用Create Process来注入代码
' R. Y- r) B0 Z8 n22.8 API拦截的一个例子9
# [% l* d1 q6 G0 `" n. \22.8.1 通过覆盖代码来拦截API0! P/ t( T8 |3 _. t# p: c6 u* g6 t. r
22.8.2 通过修改模块的导入段来拦截API: F% _0 {9 |, v0 e4 W9 q7 ]
22.8.3 Last Message Box Info示例程序8 X' T! ?/ s( l- N

% @) {4 _! L5 Y7 h7 W第Ⅴ部分 结构化异常处理1 Z+ [# }% {( u7 Y

6 [3 i/ J# r5 s7 V5 K! e& Y第23章 终止处理程序0 n+ ]' N) ^# v, U5 L& ]
) C0 i: U" l  z  `" {8 I
第24章 异常处理程序与软件异常$ O+ i; a& J) m2 Q* @$ t, L

! K& E4 W# d* m0 M/ i24.1 通过实例理解异常过滤程序和异常处理程序: X6 d# w3 g3 w( b- I
24.1.1 Funcmeister1函数- T: Q& V* F0 W- {, f& g1 H8 a
24.1.2 Funcmeister2函数
1 K: k3 i/ X( E! _$ J% }24.2 EXCEPTION_EXECUTE_HANDLER1
: N+ g0 y" x. q3 B; H/ v6 N24.2.1 一些有用的例子# R# T! \6 f" ~) H" s2 I. Y
24.2.2 全局展开
2 V: _. Z- ]% `8 |24.2.3 停止全局展开0 C  y9 L/ o, \7 O
24.3 EXCEPTION_CONTINUE_EXECUTION
7 a  S9 n, f3 x+ Y# \24.4 EXCEPTION_CONTINUE_SEARCH02 K$ s9 G; l, u& u9 d
24.5 GetExceptionCode2' _* ]( }) K0 S
24.6 GetExceptionInformation62 [# T5 [. ^, D: U' R, S
24.7 软件异常/ y- m/ _' z) x! ]
, F5 k  K% M! W4 B4 n
第25章 未处理异常、向量化异常处理与C++异常1 D% T' K9 n1 Z, P" B) `

+ V  w& f% o: R5 h" ~25.1 Unhandled Exception Filter函数详解4 [5 K7 ^9 H/ f8 P; c. @
25.2 即时调试
& U8 G  S+ g2 Q3 [9 T25.3 电子表格示例程序# F1 p0 e) J. m, F) R- G& v* i, l
25.4 向量化异常和继续处理程序1 ?) l/ I- o3 r6 {7 S: Y9 k
25.5 C++异常与结构化异常的比较: u9 i: p; E9 [: h8 W
25.6 异常与调试器" a6 T" {3 n* S; [( a4 Y! K

5 R7 u9 j- _+ Y第26章 错误报告与应用程序恢复
- g2 ~. \5 C- @7 {! B# ]/ J* R
0 K; J# @- X# [  V, W26.1 Windows错误报告控制台
" D! J2 H- E$ b3 N5 c* }6 q26.2 可编程的Windows错误报告
: S/ u8 s. K7 n% U, D26.3 对进程中所有的问题报告进行定制, B1 J2 F/ S8 p
26.4 问题报告的创建与定制/ h/ K) I0 `6 ?9 S; I6 E
26.4.1 创建一个自定义的问题报告3 n/ s/ ^9 T7 p6 y* O
26.4.2 设置报告参数:Wer Report Set Parameter) F) e2 d5 r2 S; W. v7 r5 x4 ?
26.4.3 将小型转储文件放入报告:Wer Report Add Dump 8
& E$ U  g% ^0 X' R4 Y$ [26.4.4 将任意文件放入报告:Wer Report AddFile 95 ^5 y7 S) Q2 F3 x. r: B) u
26.4.5 修改对话框文本:Wer Report Set UI Option
; [. {; y/ Y$ i( o' t% O) k26.4.6 提交错误报告:Wer Report Submit
# }, L6 k$ L& ^  L0 n1 J8 @26.4.7 关闭问题报告:Wer Report Close Handle
* L2 o* C5 |' n26.4.8 Customized WER示例程序
2 @  h" u( m$ l& T26.5 应用程序的自动重启与恢复
/ Q- S2 y( `7 Y0 V1 r26.5.1 应用程序的自动重启
4 `6 w! i% @/ Q$ Z- v& M1 B' D. N26.5.2 对应用程序恢复的支持
4 |/ }( }4 q- r. }% M( y5 ]% r" t$ _
第Ⅵ部分6 r, `# r( n: m5 X/ U7 }

6 z+ ]; J& c( b0 \0 R. [0 f附录A 构建环境& ?6 r' Y0 j+ b, [
2 N1 M" P7 G) g2 ?$ F4 N7 R
附录B 消息处理宏、子控件宏和API宏
+ ?/ g! V' T7 Z& b$ }/ p' M! e% P+ F- w% _" L
索引
9 r9 z# `- T4 e. L5 h% e
% {- k) N% X- a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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