鱼C论坛

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

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

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

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

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

x
TB1tChLKpXXXXbnXFXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

3 p3 O" I* d( G2 F' c# r( [, ^: u9 `6 `  _" F3 a
书名:《Windows核心编程》(第5版)9 r9 I" L( i7 B) B
作者:Jeffrey Richter,Christophe Nasarre; k/ C7 U* m/ }, k; ^  n: V7 Y. e
译者:葛子昂,周靖,廖敏
" ~+ N1 p! S* @& \  r4 E% l出版社:清华大学出版社( s8 \6 _* m' g
出版年:2008年9月1日(第1版)" i5 q( R4 e: a- O. M/ s
定价:99.00元
* A. J7 c% A8 u" s$ P6 O- E装帧:平装$ n" b; Z' I( V5 l) ]" h0 U2 z
ISBN:9787302184003+ g/ I# G* @" Z: ]+ ?# O8 U0 X- R
0 F7 v" @6 J3 C
购买链接:
/ f. X9 k0 d0 B. @# s0 O
$ p5 \" i$ k- W7 b/ j
- M7 K3 `0 r0 E/ j2 a6 z+ V
亚马逊 -> 传送门( I8 @0 r$ q& E

! b8 H& i# {- M! J& ]2 d当当网 -> 传送门& z7 [4 }3 T4 s' C$ z

, o' J. ^& H- _6 d8 S# g1 ]4 K/ ~京东 -> 传送门
2 o( b* p( m# r% O( E8 }7 U: B1 r: m3 @2 F0 Y* B, e6 t4 E. F
天猫 -> 传送门
' Q& @$ Y4 ]6 e$ x
, o* O- J% h% V" f
: o  M, E& `0 c内容简介:6 [0 }1 \9 u' k" o3 u  R- K* ]1 s
) a* m5 m, @/ U$ P/ ?

  L4 J& p8 G. B+ L% n: q: W- }3 V. j6 H
《Windows核心编程》(第5版)是一本经典的 Windows 核心编程指南,从第 1 版到第 5 版,引领着数十万程序员走入 Windows 开发阵营,培养了大批精英。《Windows核心编程》(第5版)针对 WindowsXP,WindowsVista 和 WindowsServer2008 全面修订。主题广泛,内容丰富,讲解深入而精辟。透过这本 Windows 编程经典,我们可以在专家的悉心指导下,洞悉 Windows 编程精华,深入了解高级编程技巧,编写出高性能的 Windows 应用程序。9 t7 F( ?& {. W% t

6 X0 ~8 X3 @4 |* Z7 _- b本书重要主题:  M) |& @/ |: }; X
  • 如何为 32 位和 64 位 Windows 系统构建和实现应用程序?
  • 如何新建和处理进程与作业?
  • 如何调度、管理、同步和销毁线程?
  • 如何通过 I/O 完成端口执行同步和异步设备 I/O 操作?
  • 如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存?
  • 如何处理默认调拨的线程栈物理存储?
  • 如何为延迟加载、API 拦截和进程注入构建 DLL?
  • 如何使用结构化异常处理、Windows 错误恢复和应用程序重启等机制?( N8 I4 j, G) I* @( z

# k- X4 t$ M! Q
4 a2 l+ E. e5 q; i6 r# H) G目录:
7 Z. C3 w5 \" y
- @  _8 k, C) L

) o0 s+ T# s9 i. I) ?4 K第1部分 必备知识
" a7 @! P! G6 a0 ]4 ?' `7 H4 G9 e
! k/ F# W6 j6 U. p第1章 错误处理
3 ^: Z  ?+ z+ ~, E6 D4 |) r5 P4 G* g2 o
1.1 定义自己的错误代码( @# K1 W: R" M* U2 e; N0 |' ^
1.2 Error Show示例程序. b& z  C) Q8 ?) o

, T. ~  g  _* }% n* K, e第2章 字符和字符串处理
" C  b* q! c& ~7 A8 F, \
3 ]8 g6 T( C) i2.1 字符编码3 C, [8 {" ]9 }" X7 d9 ~
2.2 ANSI字符和Unicode字符与字符串数据类型
. T! G+ V( O! d+ M7 r. r; U: ~2.3 Windows中的Unicode函数和ANSI函数
. ?& U2 D- [4 P5 E% x2.4 C运行库中的Unicode函数和ANSI函数7 M2 y" I. b( M. e, F
2.5 C运行库中的安全字符串函数
/ h' [, `2 p, [# Q& u  y4 j- O9 S) T2.5.1 初识新的安全字符串函数
# t8 h) p, b. U5 Q! Z: {+ t0 d2.5.2 在处理字符串时如何获得更多控制
& N; \8 ~& s3 e; g' O! ]' R0 y2.5.3 Windows字符串函数, v5 q7 w# ?* N! ~) x/ Z" o
2.6 为何要用Unicode: X5 J1 K& p* f8 ]8 B
2.7 推荐的字符和字符串处理方式* v1 z1 f; [% Q, \7 t+ f
2.8 Unicode与ANSI字符串转换# z7 x' Y0 g0 U. x
2.8.1 导出ANSI和Unicode DLL函数- j2 ]% _$ l) n2 k7 q: s8 }
2.8.2 判断文本是ANSI还是Unicode# F6 C$ K" G" Q& P/ p5 _
) K4 ]& N, @$ v; r0 E5 B
第3章 内核对象5 R4 q: Z' G/ S" `
  R* o( g% h7 d* b$ A2 V
3.1 何为内核对象1 Y; K9 K* ]0 n; p9 ]/ [: o& ^* n
3.1.1 使用计数
! `2 l7 u" H" p& b! M' ^- q3.1.2 内核对象的安全性
: q5 Q( v+ x. Y1 U) L1 y3.2 进程内核对象句柄表
, Z' L9 j/ V  z+ n/ `6 q3.2.1 创建一个内核对象" H  D  t2 K2 {$ F% u8 T8 }6 p* D
3.2.2 关闭内核对象: w0 d8 R4 F3 T9 {
3.3 跨进程边界共享内核对象
& W- o3 D1 M' y( b, U3 t3.3.1 使用对象句柄继承5 T, E4 y- M$ d& c
3.3.2 改变句柄的标志1 M% Z1 Z: l: s! V7 \
3.3.3 为对象命名, w4 s4 [6 h' _& d2 q9 M
3.3.4 终端服务命名空间
: E: v3 f- c3 `0 l# {4 W3.3.5 专有命名空间+ ~8 A# N: |0 m
3.3.5 复制对象句柄( e! V3 k% [" U8 K

# \* H8 h5 x( ?* W第Ⅱ部分 工作机制" o# ^) _# r7 ?% a0 r+ G: e

4 I8 F! _0 D' _0 F; i( f第4章 进程
( Y; o# F7 s9 [$ n. ?) `/ q
7 ?# ^: Z" W- D: u, v, x4.1 编写第一个Windows应用程序
/ P2 }# C2 t" J  v" K4.1.1 进程实例句柄3 f7 [9 L+ Z" \2 P0 \. s
4.1.2 进程前一个实例的句柄
0 e* d# |. ~& K4 Z4.1.3 进程的命令行% ^7 v% A) C+ u
4.1.4 进程的环境变量. M9 v  G% t7 g# t
4.1.5 进程的关联性/ ~" n. z' ?& H1 ]2 Y, k9 P
4.1.6 进程的错误模式5 p' }- r. L" o& M9 F! `  L2 k, v5 v5 W
4.1.7 进程当前所在的驱动器和目录
/ _* v7 l# ~2 e+ f  A- p9 ~) K5 E0 F( H4.1.8 进程的当前目录
* c8 |% b" _# [! H. B4.1.9 系统版本+ X( [" {9 Z+ R' Q  W, `* D
4.2 Create Process函数) A' x3 |8 t" V) U" A
4.2.1 psz Application Name和psz Command Line参数# U2 b9 T  n* r+ C2 U
4.2.2 psa Process,psaThread和bInherit Handles参数9 t& |! P, V7 Z) ?1 m+ w
4.2.3 fdw Create参数
1 b: u5 u' Z+ q0 e4.2.4 pv Environment参数: k: j7 L% f# P" f" o. I/ X( J% ?( U
4.2.5 psz Cur Dir参数
9 z2 m7 }9 S/ X4.2.6 psi StartInfo参数+ O0 p- q8 }( z" Z
4.2.7 ppi ProcInfo参数5 \" A6 o4 y" `7 \7 ], O* J
4.3 终止进程
$ J3 w% s% ~) O1 {# t7 M4.3.1 主线程的入口点函数返回
0 z/ I7 a* C7 R7 W4.3.2 Exit Process函数
- f& ?( N: J' S% k4.3.3 Terminate Process函数
6 K/ y% d, m$ N4.3.4 当进程中的所有线程终止时( [2 R* ?. t. Q+ j6 [+ d1 ]! r
4.3.5 当进程终止运行时
/ Z5 F% D) K! ~* N- G- N0 a. e4.4 子进程: e& \. S4 P! u+ l  M- X8 C
4.5 管理员以标准用户权限运行时: h2 f  a. M( ~2 _4 \, ]
4.5.1 自动提升进程的权限
8 c* w) S% T6 Y( P+ f! K- b4.5.2 手动提升进程的权限
: P$ v/ _$ K( O4 W- j0 |% v4.5.3 何为当前权限上下文
; t$ c+ J0 S: I0 O4.5.4 枚举系统中正在运行的进程
" B4 A( n7 ]7 e; ~- K, r4.5.5 Process Information示例程序, W4 ~8 w2 r7 ~/ x+ L

& d, A  K3 L- w, T0 T/ T' @" b第5章 作业
! [. x0 R/ V0 V9 Q* \
, H1 j1 E& U9 B* K! E, `' E8 H% b& X5.1 对作业中的进程施加限制6 o$ V5 j2 ^3 c; f$ T" p& y
5.2 将进程放入作业中9 ]2 b' d6 j0 n0 }6 t# Z) g, I* {0 R7 u, R
5.3 终止作业中的所有线程查询作业统计信息
8 B. u" I3 Y, G5.4 作业通知. H8 i' Y1 Q; _* l. c1 c
5.6 Job Lab示例程序( @) w2 z& @2 v6 `* J

. {$ j% I' y; F. U  E4 b第6章 线程基础
6 Y' v+ b& Z2 x- o9 I
: O1 w8 D, a. s6 p  E- |, s' G6.1 何时创建线程
, [' f" @! a/ |) y* g: q6.2 何时不应该创建线程% Q% {3 B3 ]' V" B7 S
6.3 编写第一个线程函数7 {  L8 O$ I  a: X) \
6.4 Create Thread函数1 W, J1 ]9 P5 {% i  X
6.4.1 psa参数1 R5 ]9 T9 O9 I0 V/ t1 }. U' S
6.4.2 cb Stack Size参数$ N" I1 W! ^9 _" J
6.4.3 pfn Start Addr和pv Param参数
4 }+ u1 l$ |) W8 q+ i6.4.4 dw Create Flags
1 N2 V7 M5 }: G) j& ~- [6.4.5 pdw ThreadID7- Q7 K! p- s' @
6.5 终止运行线程
5 k1 P' `3 v8 Z% ]6 ?& x6.5.1 线程函数返回$ x! X$ \" f! O8 f4 b1 Y' g. Q
6.5.2 Exit Thread函数+ D, M2 U1 n& u8 h" i& R+ H
6.5.3 Terminate Thread函数. Q/ `9 }" p1 L
6.5.4 进程终止运行时
; P( }0 }# v: d2 T7 ^6.5.5 线程终止运行时( ~' p* s0 l  d
6.6 线程内幕
1 k+ j9 [  e+ T7 K1 g- U+ p$ ~6.7 C/C++运行库注意事项2 g$ p5 h2 u* ]- a" T4 ]
6.7.1 用_beginthreadex而不要用Create Thread创建线程
3 A" ~  z2 j& \: g( B6.7.2 绝对不应该调用的C/C++运行库函数
7 Z5 f/ T4 `& u5 v/ l0 b6.8 了解自己的身份
. e- g8 ?8 o9 @4 `! @6.8.1 将伪句柄转换为真正的句柄
4 f# k+ s3 ^# p0 Y3 M! v) y% z# E7 T5 |
第7章 线程调度、优先级和关联性
1 P& N5 Q. Q, N% S8 F0 n3 ], @6 J! S0 j8 y
7.1 线程的挂起和恢复3 e% V2 n3 }7 i* |. @
7.2 进程的挂起和恢复5 L8 v+ ?2 f7 s6 T6 K# _
7.3 睡眠
' ?4 C# N: o( P3 Q: K6 s7.4 切换到另一个线程( o! d- E& {9 x/ c
7.5 在超线程CPU上切换到另一个线程
6 O9 ?; L6 N0 P1 [5 W  q$ k7.6 线程的执行时间
( B3 v, Z, m* f' f$ J8 B+ x# u7.7 在实际上下文中谈CONTEXT结构1 R3 n2 K6 g* L0 V
7.8 线程优先级/ Y8 u" x2 ~5 B7 _6 z& A9 q! Q
7.9 从抽象角度看优先级. k( Z7 X* ?# ?: O& l! E: j
7.10 优先级编程8 _4 W1 ~0 }& s) m: `
7.10.1 动态提升线程优先级
8 B: e8 M6 ]- n) y5 L( Q7.10.2 为前台进程微调调度程序  q1 _" _% C6 v- n/ x" A  V4 o
7.10.3 调度I/O请求优先级
8 ]* K* O: F# `2 ]1 }8 o4 x7.10.4 Scheduling Lab 示例程序) Y! Y' X, Q: ?6 d- P% x
7.11 关联性
1 _  _$ [3 x3 y+ W# |8 N) ?" C6 ~# G9 P1 P8 ]
第8章 用户模式下的线程同步# s2 D% }+ l' N
4 o6 j' q5 z# c8 E
8.1 原子访问:Interlocked系列函数8 Z& v6 A: i" i$ Y/ [
8.2 高速缓存行
8 }' [8 G5 r" K. r% e; {+ V8.3 高级线程同步需要避免使用的一种方法/ ^# H0 X' s; N; L9 m/ `# ^
8.4 关键段  f* E; T7 J: Z4 u  N* \
8.4.1 关键段:细节) X. {2 u! g1 _9 ]
8.4.2 关键段和旋转锁7 S3 b  Q# {* A& a$ e' F
8.4.3 关键段和错误处理
5 K* k8 L* e, J7 d" J8.5 Slim读/写锁
5 F4 M% N2 c* H3 T0 [. u8.6 条件变量
% w  Y  F1 S( G+ N, O- z8.6.1 Queue示例程序
: l/ F% X) J8 \8.6.2 在停止线程时的死锁问题
% u) T7 W" _& Q5 h' M5 r' S% d8.6.3 一些有用的窍门和技巧- x+ `1 p% d1 ~3 L- p) V0 K: O

8 i& u) e8 H1 F" d5 ]6 C6 G; f第9章 用内核对象进行线程同步4 X. ^( {' J9 c9 Z1 x! D5 {# l
" k5 H2 M; |& J5 z' ~$ X* I
9.1 等待函数
; y: L1 C6 C  C. m9.2 等待成功所引起的副作用9 e! n* m9 Q& w& r
9.3 事件内核对象
, d: }6 u" a3 \2 o; R. c" t9.4 可等待的计时器内核对象
& z4 M, N% a, I1 r" T9.4.1 让可等待的计时器添加APC调用
6 t1 X" G5 B8 Q5 N8 M1 u9.4.2 计时器的剩余问题& \* U+ b% {% U! X6 I
9.5 信号量内核对象
- [8 y+ j3 t2 s: Z: h9.6 互斥量内核对象
( w# w1 H- A. s* _9.6.1 遗弃问题
8 g* u: P! d9 r% [/ N' K# W; z9.6.2 互斥量与关键段的比较
$ {- k8 O# ?( L6 B$ |+ |$ c6 j9.6.3 Queue示例程序
3 C/ H# p1 T, s, r( ~/ @9.7 线程同步对象速查表
. s# ~& r) A' Y/ Q) s/ Q. W/ K9.8 其他的线程同步函数' o- }+ x, i& s3 \( ]  r5 }* t
9.8.1 异步设备I/O4 C8 b' m3 j$ b3 _
9.8.2 Wait For InputIdle函数7 y' x% {% c( a. h$ l
9.8.3 Msg Wait For Multiple Objects(Ex)函数& [2 c6 f6 q" J2 F% X
9.8.4 Wait For Debug Event函数
2 W8 C2 |9 ~, _. f* Y" g% u9.8.5 Signal Object And Wait函数
- ^( A% }3 C3 r. t9.8.6 使用等待链遍历API来检测死锁
1 C) F8 W( n) N; P, i# ~( K1 {2 S2 _! L) p- r
第10章 同步设备I/O与异步设备I/O
7 o5 i5 B' t. ^" a7 k# k' G5 y" q2 H5 I0 ?7 B
10.1 打开和关闭设备细看Create File函数0 E- m& }& s# R# [. v/ p: c
10.2 使用文件设备
$ P1 r8 y1 G7 H! S10.2.1 取得文件的大小4 x+ m0 y: F" O
10.2.2 设置文件指针的位置
" w4 X# B4 q1 z9 d7 l2 E8 }10.2.3 设置文件尾
$ y& W! n8 P! e7 d& K) Z6 o2 y10.3 执行同步设备I/O* O* K$ N( v( @. n
10.3.1 将数据刷新至设备
) }+ G& Z( G3 }* x7 E! I1 x10.3.2 同步I/O的取消
5 E7 Y3 K* Z: d5 Y* L2 X10.4 异步设备I/O基础
8 D; O$ W& J3 o10.4.1 OVERLAPPED结构
( V9 r8 Z% L8 n( r. L10.4.2 异步设备I/O的注意事项5 R  x# V  ^; B0 _: G- v5 d) G' C
10.4.3 取消队列中的设备I/O请求4 A3 h) M' s4 J6 B9 s9 p
10.5 接收I/O请求完成通知# B9 X) ~  i4 `4 }  p8 R$ d
10.5.1 触发设备内核对象
* |$ D7 u, b  n3 ]/ \! W10.5.2 触发事件内核对象% ?  z' P  T! z; k) a" Y& S  R8 e
10.5.3 可提醒I/O/ _) p: d" E; H3 H4 `* Q  H1 g9 a  E
10.5.4 I/O完成端口  p" T9 C+ e3 \
10.5.5 模拟已完成的I/O请求: |# [( r" \+ _: N

: ~2 \* W; I/ ~& ?* }第11章 Windows线程池
3 m) `" W! Q* {: z" S/ w. q
# s: {" U4 Q3 D2 v" L11.1 情形1:以异步方式调用函数: A" P7 x& k; O/ r5 k
11.1.1 显式地控制工作项
1 T+ U, X# d- h" S11.1.2 Batch示例程序4 p/ f6 x0 v9 e7 x3 P. b
11.2 情形2:每隔一段时间调用一个函数
( e- r  g8 Z9 H/ G' n& v2 e11.3 情形3:在内核对象触发时调用一个函数
8 V# w1 m* q7 X% H! n11.4 情形4:在异步I/O请求完成时调用一个函数
/ L* [, b9 o. B2 N# H/ A+ T11.5 回调函数的终止操作  `0 {- r' V" J  f
11.5.1 对线程池进行定制0 J/ T, z2 f5 q( m
11.5.2 得体地销毁线程池:清理组( ~0 q, G+ D" n% [7 j1 K7 W

+ ]- l- i5 q" T- U: _8 {7 v5 h% P第12章 线程- M' [9 c8 Y4 o8 q

" K5 ~2 X: H4 \- x* x1 `% F; M第Ⅲ部分 内存管理: j% T  r0 z$ f- c9 D9 \6 W8 W

. j; r7 w. P& {# q. K2 M第13章 Windows内存体系结构; g- \( I# z  h. w

" m6 w( {0 ~9 z' G# [9 I5 g; E13.1 进程的虚拟地址空间; P- m5 f, n. p" U+ R  }0 J
13.2 虚拟地址空间的分区# [3 x# E) @9 x7 _4 m4 t& v
13.2.1 空指针赋值分区
% Y) [  }' C: W9 J1 c13.2.2 用户模式分区6 }7 x3 @6 I+ \$ h" v7 K1 }3 ]
13.3 地址空间中的区域
2 l5 u" i- q3 ]; W& V7 w13.4 给区域调拨物理存储器
; v4 F" ]2 B' A( X3 V" e1 W13.5 物理存储器和页交换文件, U8 x- g( N7 l) x# [$ U5 X
13.6 页面保护属性+ ?  d% U' _( I# ^% n
13.6.1 写时复制1 a2 p- `. o; l* r/ m( X  V( [
13.6.2 一些特殊的访问保护属性标志  o9 o  b7 i  N1 G1 i. ]5 k. y) h
13.7 实例分析
+ [5 J/ ?% A9 J2 v: q13.8 数据对齐的重要性
$ j+ y6 L* n: r# V" y
* A3 p& f+ C6 ]  I8 I. J第14章 探索虚拟内存
3 l" J/ g" k, o2 L4 `' s% y9 c/ I" ~# y3 W; c, ]
14.1 系统信息
* y  G9 F) s' U14.2 虚拟内存状态1 p6 \  u0 u! ]- _$ u' Q
14.3 NUMA机器中的内存管理
. K9 d, w- g1 P# p9 f14.4 确定地址空间的状态
+ H, d$ X; N1 {# Z; i2 m14.4.1 VM Query函数
7 l& f, h( Q+ `2 q1 k/ l14.4.2 示例程序:虚拟内存映射, s' x' N! n4 _4 }

- T8 _6 I6 b% X! `* `第15章 在应用程序中使用虚拟内存" P% h; @. ?. @1 ~" `
% [/ q4 o' K- f+ Z2 S
15.1 预订地址空间区域
0 |$ T. ~) k' ]$ y1 ?15.2 给区域调拨物理存储器* r$ k0 p7 E" v" ~. M
15.3 同时预订和调拨物理存储器6 ]; S- {8 H) }9 _9 K8 R
15.4 何时调拨物理存储器
2 ]  j' x, |6 F/ d- r15.5 撤销调拨物理存储器及释放区
( _5 h$ g2 P! r, v' L15.5.1 何时撤销调拨物理存储器1 @/ t6 A1 o/ U- c
15.5.2 虚拟内存分配示例程序
( D1 g  F5 W* F2 N* R* J1 ]8 o- K15.6 改变保护属性7 x, h/ a1 p3 P% Q  ?
15.7 重置物理存储器的内容
7 N- A1 R8 D3 J; ]15.8 地址窗口扩展
3 D) ?" K; R) N: T$ }& r; V* R5 _
% k! ?  {. W* O9 H第16章 线程栈
0 a/ z( L) d9 d% Y6 E+ k6 d, ?+ }
3 J$ v& @: j4 D' K& S16.1 C/C++运行库的栈检查函数7 [+ S1 b' H; f3 G: R
16.2 Summation示例程序
3 ^" e# A9 H3 u9 m9 Z3 z% F* s( V# P+ y- a8 m6 E  x! m
第17章 内存映射文件9 \3 F. W, v1 ~. E& ~( V! ~) ^
7 ]9 ^, p1 h9 ~. T
17.1 映射到内存的可执行文件和DLL
+ m* E2 a  U  k: k) B) q2 k; U$ e17.1.1 同一个可执行文件或DLL的多个实例不会共享静态数据8 ^% L0 a0 ?  L& ]  J! ^
17.1.2 在同一个可执行文件或DLL的多个实例间共享静态数据
5 o) i2 g+ I! n/ n" t17.1.3 Application Instances示例程序
2 x7 H* |7 s3 N4 Y17.2 映射到内存的数据文件9 A: l4 Z! E, W) ^7 P3 s
17.2.1 方法1:一个文件,一块缓存, F, W" p' s1 ?. @0 f* D( D% F
17.2.2 方法2:两个文件,一块缓存
8 E' _0 p, n% H7 o! H17.2.3 方法3:一个文件,两块缓存- Z% w1 k& \7 d
17.2.4 方法4:一个文件,零个缓存
) X& \5 C" m6 |4 F4 M! s17.3 使用内存映射文件  `% V1 d6 G5 T- l( p5 n1 y3 I6 h( U) ^
17.3.1 第1步:创建或打开文件内核对象& W2 }% J; ^3 N0 w$ b
17.3.2 第2步:创建文件映射内核对象, R( @. i$ e4 Y/ G$ n
17.3.3 第3步:将文件的数据映射到进程的地址空间7 t5 X1 T+ {  o) G8 o& h" m
17.3.4 第4步:从进程的地址空间撤销对文件数据的映射) J) h" E% a3 A3 n
17.3.5 第5步和第6步:关闭文件映射对象和文件对象
$ c9 M8 n$ k/ |5 I5 M17.6 File Reverse示例程序
% x2 N/ U! `% V" u. N; a17.7 用内存映射文件来处理大文件9 G' H$ }1 c" p, g" q% E
17.8 内存映射文件和一致性0 Z# P! l" E' {7 a: x1 L6 [
17.9 给内存映射文件指定基地址
! F7 q  v7 d5 J9 M17.10 内存映射文件的实现细节
$ k" n; z  L. m) }' W1 f8 q
) n1 w9 a1 Q' T第18章 堆& @+ B+ b+ I: `
" r" \* p0 ^% w! }: ?) K
18.1 进程的默认堆6 }$ Z; m7 r8 e' N  A$ O: W1 a2 Y
18.2 为什么要创建额外的堆  V+ Y3 }4 t* G7 |6 K* q, x9 A
18.2.1 对组件进行保护8 |3 l5 S2 Y' D# J2 j/ T
18.2.2 更有效的内存管理% B) L4 C, M) E" M0 e% z
18.2.3 使内存访问局部化6 Q5 Q. X* A3 _( \$ x* D& \$ i, H
18.2.4 避免线程同步的开销  ]* [2 U% R# ~" B. K  [
18.2.5 快速释放7 ^5 W8 {; ]/ C
18.3 如何创建额外的堆" J7 z- g' j1 E! z: C
18.3.1 从堆中分配内存块6 n3 A8 D0 k, S7 A4 J
18.3.2 调整内存块的大小# z& R: o6 e) C5 f; j& J& n: U* C
18.3.3 获得内存块的大小
- U7 R) {' V; F4 Y$ H$ F18.3.4 释放内存块% X1 ~' |  ]4 t( W" \: X' P& ?
18.3.5 销毁堆- `1 m$ z& V5 g7 t) I" c/ E; B
18.3.6 在C++中使用堆
: S: \& M% [5 g8 E+ Z' n* X18.4 其他堆函数
% K- b& z$ d# r# H7 b' E
; q" F# J) `5 _' [第Ⅳ部分 动态链接库
5 T) `" d, O. B
5 I% [% z+ G2 _3 y2 Z第19章 DLL基础
" y! N# ^2 f: W- r( o& X/ g1 }8 @5 H& P! K8 G) M1 t
19.1 DLL和进程的地址空间% t' u9 ?& _9 u! L; C
19.2 纵观全局
( y$ O6 U( `3 ^19.2.1 构建DLL模块
: v9 c3 w, x# U  L) y6 X6 W; W19.2.2 构建可执行模块
4 _( `# S# e% i. W( q19.2.3 运行可执行模块
1 {5 m$ m0 w' c" O8 F' w+ \
$ g  i; n5 c2 \" U3 t! V第20章 DLL高级技术4 l) f, `  a* h* r
& h- a0 ?# |% x' [) U% p% I
20.1 DLL模块的显式载入和符号链接8 x4 `+ X* E, f! @! p
20.1.1 显式地载入DLL模块
2 d1 Z" }' M9 u$ |2 q* u, |20.1.2 显式地卸载DLL模块
1 p# @; y6 G2 x& R20.1.3 显式地链接到导出符号
: C* D: E& o2 U3 i" P  @# C20.2 DLL的入口点函数8 H) J' ^/ R: q) N) l/ H. E# ^
20.2.1 DLL_PROCESS_ATTACH通知
3 d& W: F! B, j) Y# h20.2.2 DLL_PROCESS_DETACH通知) w/ ?. }2 C: S7 z! r/ f
20.2.3 DLL_THREAD_ATTACH通知
, D  K' ^# b, R20.2.4 DLL_THREAD_DETACH通知
; H1 l' Z! e7 Q/ \0 E" T6 l& v20.2.5 Dll Main的序列化调用! u: u8 p5 o& c- O' I8 z8 P
20.2.6 Dll Main和C/C++运行库0 b. o: D5 b* i/ G! Y1 v% |4 h8 d
20.3 延迟载入DLL
- s- P1 x  ]3 g20.4 函数转发器
; a. e0 O* G" v) R20.5 已知的DLL9 {# ^  `. k) t' i7 A$ j7 s, W3 V& q5 w
20.6 DLL重定向
6 K) B- @7 V/ D20.7 模块的基地址重定位
/ k/ y, O+ E" Q, V3 D! W20.8 模块的绑定& A" f5 H# v- `6 e! y0 D5 R
3 ]: |: K* f/ }9 Y- k! i5 s+ b4 C. o
第21章 线程局部存储区
* h1 N& w  b+ Q1 x6 [8 W- F6 B/ ^! r% W7 N
21.1 动态TLS- i7 A) T# m( g  R
21.2 静态TLS01 e' {' i6 `9 C- X; ~  Z
$ L4 D2 c/ g% Y" j& f- k/ I, X
第22章 DLL注入和API拦截$ c" Z4 K- m0 X9 v: D! [
9 E, N6 C9 l9 y4 M& [0 D
22.1 DLL注入的一个例子
+ y0 a6 r7 }# s* p% V22.2 使用注册表来注入DLL% ~$ C5 Z/ d* W- o$ J) D
22.3 使用Windows挂钩来注入DLL
5 f  D6 S/ f( C( T- B22.4 使用远程线程来注入DLL
: G2 D0 U/ Z/ I  D22.4.1 Inject Library示例程序
* k; G$ C) t  C' c22.4.2 Image Walk DLL, z1 Y& p1 a, X! ?# c. |
22.5 使用木马DLL来注入DLL) C) E* z1 z% Q( Q1 ~* n3 }
22.6 把DLL作为调试器来注入) w7 ?3 T- ]( K* f* s
22.7 使用Create Process来注入代码& [( h; _! T+ J% N! a
22.8 API拦截的一个例子9
! {/ B" C  a2 s( ~8 ?3 T, [22.8.1 通过覆盖代码来拦截API0* A2 j1 I8 S, z/ Z; p1 r
22.8.2 通过修改模块的导入段来拦截API
2 q7 I% A1 a8 y! V22.8.3 Last Message Box Info示例程序
! `- M) u* b8 _/ c6 ]+ V# L( T/ H7 V4 P( |
第Ⅴ部分 结构化异常处理
& q4 C, k7 z7 @
% O6 S* M  @' J" t' V" B4 `7 i" v4 U第23章 终止处理程序& p) ?/ _7 W3 N) t+ P

" K, |8 s3 \. R1 T第24章 异常处理程序与软件异常7 \% B' Z! b. g6 ^3 K; q

0 o% P0 F0 a$ g24.1 通过实例理解异常过滤程序和异常处理程序5 J7 w  V4 o8 F# A4 S& A
24.1.1 Funcmeister1函数  ]" z" G- E* o) p% R+ G2 K  M, z
24.1.2 Funcmeister2函数
5 I- v% m2 E+ M% u7 t- C24.2 EXCEPTION_EXECUTE_HANDLER1
; d% E, Y/ X% Z4 J  n! A24.2.1 一些有用的例子
$ ~1 w. i: t1 @% x2 w' J24.2.2 全局展开
. i: q8 S8 R1 Q24.2.3 停止全局展开
" _/ D" L9 i0 p  P! s& w24.3 EXCEPTION_CONTINUE_EXECUTION
, C9 C- U1 c) F  U7 E% y# K24.4 EXCEPTION_CONTINUE_SEARCH0- x( X! }/ d5 T7 [
24.5 GetExceptionCode2  p/ L8 x, F- Q; m
24.6 GetExceptionInformation69 g' D7 A* {$ a% J" i
24.7 软件异常
/ h9 p2 N, j) w
# y. c" i0 d6 b* ?* w' E: @8 F( j: c第25章 未处理异常、向量化异常处理与C++异常* C/ y/ Y* E% R9 `8 z0 f

- H/ S# O* O$ Y, f' Q& e; ?3 U* r25.1 Unhandled Exception Filter函数详解6 Z2 s1 B) l7 \' v! O) k
25.2 即时调试
: G/ h! C8 S( H; D; H. }- j. @25.3 电子表格示例程序
+ g+ r- j6 L4 U) {0 c25.4 向量化异常和继续处理程序
% \- I" ^5 A# g  v25.5 C++异常与结构化异常的比较- J2 ~. I2 [$ Z
25.6 异常与调试器
" r, n' r+ F& C7 s( _- G3 ~8 [
$ P8 U5 w/ g, k" f第26章 错误报告与应用程序恢复
7 n( ~- t8 R3 P3 h+ M$ @3 u- l- z: \
  e. F0 T  U; I9 L; o, ~. J- ^% p26.1 Windows错误报告控制台6 d! f5 s; Z  k. G4 H
26.2 可编程的Windows错误报告9 j7 T0 G5 Z5 `
26.3 对进程中所有的问题报告进行定制
0 q, B  v% i9 d! x8 a; |26.4 问题报告的创建与定制
7 R& V. i8 z7 |* g! U, x9 f26.4.1 创建一个自定义的问题报告
" k* M" i) A( y: e/ J1 e9 d% X, E, \26.4.2 设置报告参数:Wer Report Set Parameter9 q( ?2 Q( W- z: x( o6 |
26.4.3 将小型转储文件放入报告:Wer Report Add Dump 86 [: p1 I" U$ v% \0 s
26.4.4 将任意文件放入报告:Wer Report AddFile 9
1 b$ ]8 I# V7 B6 ~( |0 X26.4.5 修改对话框文本:Wer Report Set UI Option
, }, Z% s+ J/ B# c26.4.6 提交错误报告:Wer Report Submit
/ s! m4 X$ [# Y! J26.4.7 关闭问题报告:Wer Report Close Handle
) H4 `3 X! W) D: v: M26.4.8 Customized WER示例程序
2 k8 m; k  B# c26.5 应用程序的自动重启与恢复$ b9 x' a# J0 i4 f
26.5.1 应用程序的自动重启
8 N5 D6 I* {' J4 G" b1 a5 i26.5.2 对应用程序恢复的支持0 ^; o% Z' P' {" L* @3 i
5 g, e- {' _9 c2 y# q" q4 w
第Ⅵ部分
' F" x* `. ]$ w8 l$ n0 k$ I* i+ J) L1 ~6 l0 z, I( P
附录A 构建环境
6 _5 U$ z4 {3 H0 M
5 J& t. g8 u5 }1 c# z7 [附录B 消息处理宏、子控件宏和API宏, O* n8 e; a# ?

& T) h. i" W* b4 L索引
1 p  x3 f% p! m- u: K. V
/ P% j1 ^% R+ e6 E
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 02:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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