QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

管理员

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

技术值
查看: 1217|回复: 0

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

[复制链接]
最佳答案
192 
累计签到:2292 天
连续签到:7 天
小甲鱼 发表于 2016-11-12 19:14:24 12170 | 显示全部楼层 |阅读模式

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

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

x
TB1tChLKpXXXXbnXFXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
& M+ |) Y, z( X2 p+ D
, C3 Z2 _3 {+ U& F: b
书名:《Windows核心编程》(第5版)
1 f9 F6 T2 q( r+ Y' d. O+ ]" p; y作者:Jeffrey Richter,Christophe Nasarre
3 z9 N! ]$ |3 n6 |9 E译者:葛子昂,周靖,廖敏
& P( X! Z1 ^7 w( p( {7 s/ ~& t( P* `出版社:清华大学出版社2 l' J0 Y; g+ O7 I! b
出版年:2008年9月1日(第1版)+ L- m. X- l$ c& z+ I: p
定价:99.00元" @/ y! C8 u! z3 [1 ]% v
装帧:平装. C5 ~6 A& W( Z* x) d
ISBN:9787302184003
! b- P$ O' j  N# }0 z* K% c7 b; T+ R
购买链接:4 j  B4 F/ X7 H0 o/ ]

' j0 [7 N: H  |  a* i

/ d4 ?, C0 g* b  x. c亚马逊 -> 传送门) M7 K! J  Q; h+ h: D# G

. z3 @- d& Z4 |当当网 -> 传送门
$ ~& E# V2 L, m# q" K7 T6 M% N" e
, ?+ y; V  O# a% I京东 -> 传送门
1 @# V- J: M- P
( w+ A$ _7 C' H: v: f天猫 -> 传送门
: W% {% S, }- y7 s! G/ ]7 L) g6 g, p- u( a

  D- ?( y; E6 x4 A+ t( {内容简介:* y# r8 H6 M0 {! |0 G4 _
0 Q% o1 Z1 @( `6 m3 q" _/ a4 G

! q8 M1 ^, u6 @
《Windows核心编程》(第5版)是一本经典的 Windows 核心编程指南,从第 1 版到第 5 版,引领着数十万程序员走入 Windows 开发阵营,培养了大批精英。《Windows核心编程》(第5版)针对 WindowsXP,WindowsVista 和 WindowsServer2008 全面修订。主题广泛,内容丰富,讲解深入而精辟。透过这本 Windows 编程经典,我们可以在专家的悉心指导下,洞悉 Windows 编程精华,深入了解高级编程技巧,编写出高性能的 Windows 应用程序。
. H) L7 w. P) n2 m
' m1 C# X7 s7 D1 g* J2 z本书重要主题:
( M) G4 [; Z# z% M9 N  p
  • 如何为 32 位和 64 位 Windows 系统构建和实现应用程序?
  • 如何新建和处理进程与作业?
  • 如何调度、管理、同步和销毁线程?
  • 如何通过 I/O 完成端口执行同步和异步设备 I/O 操作?
  • 如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存?
  • 如何处理默认调拨的线程栈物理存储?
  • 如何为延迟加载、API 拦截和进程注入构建 DLL?
  • 如何使用结构化异常处理、Windows 错误恢复和应用程序重启等机制?
    4 Y; N' Y8 |+ ]! B
, V: v& O/ [! ^4 I5 w

7 {$ u8 d/ S  k目录:
4 m" A& X$ l' g- B3 r
7 a9 g4 o6 \9 e- |$ G
6 R0 L# D. Q. U( C8 h# h
第1部分 必备知识
/ K! W3 E  Z# W& B& x4 \/ W( _, q% h8 `) S$ e# Y! K4 S7 |
第1章 错误处理3 k; w' ?3 V# V5 H5 A9 `3 d3 b

" G2 |: G! P* q" T0 ~1 h* T) q1.1 定义自己的错误代码
1 E% z. V# |# Y, Q! r2 F+ e* p1.2 Error Show示例程序- p, |. D4 z2 G6 L. h! e9 m0 X
; N$ _! p# {7 J& h, D% J
第2章 字符和字符串处理/ j. p  L5 B  {; \; S( X$ [- K9 L

- k. E! L0 `( ^% K9 z# t% D2.1 字符编码
/ I2 D' G& ]. I% I7 E2.2 ANSI字符和Unicode字符与字符串数据类型
3 {' [1 P2 w# g* D& K2.3 Windows中的Unicode函数和ANSI函数
8 J' k; t; k; c1 |2.4 C运行库中的Unicode函数和ANSI函数+ ~! k( M2 i) j2 C8 I) \2 \
2.5 C运行库中的安全字符串函数
+ }& H; `4 r6 @% F& z2.5.1 初识新的安全字符串函数' p8 f% V5 @* v( L3 d
2.5.2 在处理字符串时如何获得更多控制1 s# s# d9 z3 w
2.5.3 Windows字符串函数2 y" c# J" U$ L  V9 ~4 u' O5 V! E6 e
2.6 为何要用Unicode, S* Y0 h* I  _& `# A
2.7 推荐的字符和字符串处理方式
: F0 H" V) G8 n1 r2.8 Unicode与ANSI字符串转换
4 N5 R" m6 c* L9 k% u9 t2.8.1 导出ANSI和Unicode DLL函数
0 I  L* T4 M1 ]1 g2 b; T& n2.8.2 判断文本是ANSI还是Unicode
7 ^* f+ W! l0 c8 Q. Z
0 \  w. }( v) }( M' Z! n第3章 内核对象6 U' J8 z! l- ~0 w) e  I  C( I7 a. @) b

2 _% H/ B1 ~8 e6 J; ?5 s+ ~9 l3.1 何为内核对象
- `/ |. z/ S: s( o3.1.1 使用计数
& p' a" W9 j0 }. N: W3 U* u/ w* W! F3.1.2 内核对象的安全性9 x5 i$ [& h0 q& w( U( h- W
3.2 进程内核对象句柄表: X. H' |9 s$ G% v  }5 x, D
3.2.1 创建一个内核对象! _: W4 ]2 Y9 v7 z3 U8 x5 B5 V+ }
3.2.2 关闭内核对象
. O/ }5 i) J) I) Z3.3 跨进程边界共享内核对象
# e  n; s6 J" l" ~# N: @: X3.3.1 使用对象句柄继承
' U. l  J( B0 I- @- c6 }- {3.3.2 改变句柄的标志
* B, V3 O+ s0 X; K: I- @3.3.3 为对象命名
  s0 `5 H) k/ u+ \- c* }5 s( g3.3.4 终端服务命名空间; ^2 {$ I" u. o; V
3.3.5 专有命名空间: R  u" X* \  K2 O
3.3.5 复制对象句柄
( F. r$ W$ f2 W# z# A, I! ?. H5 ]$ [! _" n! g) y
第Ⅱ部分 工作机制
# q# }( P! W$ b$ u- @: ~
5 u7 _# |9 Y( r* K) a第4章 进程) ~3 A) |2 e0 k
" e& O' B+ v" l, j1 O& q% f# B/ B
4.1 编写第一个Windows应用程序2 T* b2 R: k5 `0 @* V
4.1.1 进程实例句柄! x1 a9 x) p* a0 X9 B
4.1.2 进程前一个实例的句柄
, x- J* f" j( x4 W- ~$ X' [4.1.3 进程的命令行
4 D; s) U% m, l  B4.1.4 进程的环境变量! J0 m: y/ E. ^( Q0 F8 `
4.1.5 进程的关联性6 L5 a4 j- H8 x8 w' m$ F9 u" O$ `! \( f
4.1.6 进程的错误模式9 C. e& D/ [  M5 ?: i
4.1.7 进程当前所在的驱动器和目录
4 _, r, \# P6 l4.1.8 进程的当前目录' p- O: r9 X  K
4.1.9 系统版本
  f) |3 A5 i; L9 l  l4.2 Create Process函数% W+ I$ [( H; u: v
4.2.1 psz Application Name和psz Command Line参数
( G6 E2 c1 ]' h6 Z9 _, G) ?2 t4.2.2 psa Process,psaThread和bInherit Handles参数
8 M2 w; b( t6 d. s4.2.3 fdw Create参数
% f& u1 e4 g9 e/ V: M6 n! u7 [4.2.4 pv Environment参数
& c2 s( `! a' u) w" X- P4.2.5 psz Cur Dir参数
/ C9 g: {! I; U/ y- @* D0 q4.2.6 psi StartInfo参数# S) M% K( p0 E/ Y$ |. k5 n9 ~2 k/ Z
4.2.7 ppi ProcInfo参数
$ R/ x) D( L4 R# O( s$ L5 _: i6 Y4.3 终止进程
3 ?; P8 O' x) |/ f( y3 w4.3.1 主线程的入口点函数返回
  V/ ^6 z+ O* I4.3.2 Exit Process函数
. H. C' q" V& o4.3.3 Terminate Process函数5 m1 r/ M) K4 L1 G( G
4.3.4 当进程中的所有线程终止时1 _% Z' l  v7 o) D/ H
4.3.5 当进程终止运行时
: e- r' j( L) L& ^* [# M4.4 子进程
& `4 l6 f  r+ E" B3 ~, c7 ^! E4.5 管理员以标准用户权限运行时5 l, t( X' J9 p3 s3 E
4.5.1 自动提升进程的权限
7 |/ Y0 b5 C/ l/ e9 J  E1 }3 G2 u) F4.5.2 手动提升进程的权限
( ?- K  a) H" m  J& T4.5.3 何为当前权限上下文: ~5 s' R) }/ [( d8 I( N  k
4.5.4 枚举系统中正在运行的进程0 U) W' U5 ]7 N% P) p6 D
4.5.5 Process Information示例程序! }) o/ ~4 C; w, D

5 q; \2 Z8 p) s+ ~第5章 作业
: q3 r/ ^. x+ ~$ V% J! w
" a6 |9 t/ T) j& w6 K& P* S3 X5.1 对作业中的进程施加限制
: x1 X  i. u3 |( p- _5.2 将进程放入作业中
: b  j8 Z8 a( P- L+ t( \3 w5.3 终止作业中的所有线程查询作业统计信息, D1 J( C- @5 V# g( L
5.4 作业通知
  k- E' z/ n6 r5.6 Job Lab示例程序: _; _" k* D* V( X+ j1 B

  {8 u' y: ~# ?4 h4 b第6章 线程基础% J, B% d2 q6 g# I- S' u

& w; `# e! t3 l# `( Q* Q! D6.1 何时创建线程
2 s+ S& ~/ \* s% C. J  s6.2 何时不应该创建线程
, Y' I2 {+ s6 B3 u" m6.3 编写第一个线程函数' g* ^" K" \4 ?3 {; }9 V
6.4 Create Thread函数* O1 G+ Y; a  b  c) n
6.4.1 psa参数0 V' v2 L2 J3 l+ `1 p
6.4.2 cb Stack Size参数
7 k$ i; p( O1 `; }6.4.3 pfn Start Addr和pv Param参数
$ f" I; N' Q' n/ x6.4.4 dw Create Flags% I' y" p7 p, S$ ?' \
6.4.5 pdw ThreadID72 n; f6 P* r* ^% _8 v
6.5 终止运行线程' \: p$ ?3 ~& I6 n7 R1 P) d, t% C
6.5.1 线程函数返回- k1 A) X. P0 O4 B/ p7 y
6.5.2 Exit Thread函数  s. I: c0 L  P6 C$ z
6.5.3 Terminate Thread函数
* @2 L' @0 ~2 X1 M& {/ L( {6.5.4 进程终止运行时$ o. Q8 [1 `: O/ q( x# ^# f% A
6.5.5 线程终止运行时
1 O4 e; f" p+ W! A" D) U, E6.6 线程内幕
2 A( w1 B( b  l6 b) w6.7 C/C++运行库注意事项
  U) U" w2 l# S5 o0 x1 h6.7.1 用_beginthreadex而不要用Create Thread创建线程/ Z! a% s9 u! M
6.7.2 绝对不应该调用的C/C++运行库函数" M3 Y) U, K- F
6.8 了解自己的身份
6 r+ @! G9 u- m. D( \: C6.8.1 将伪句柄转换为真正的句柄. I- V8 K3 F. \

5 O# h( |7 b9 L# C- P& R* R" x第7章 线程调度、优先级和关联性" r4 T" }* p3 a; [" j" v

  D5 x# b% x* G% f. g7.1 线程的挂起和恢复$ K$ c7 l- ?- d8 K5 [
7.2 进程的挂起和恢复) b1 p! A5 U+ H9 V4 `
7.3 睡眠4 I- e$ I! C* R' S1 ~
7.4 切换到另一个线程% S3 O0 [: F2 w( j7 [7 n! D& F
7.5 在超线程CPU上切换到另一个线程7 F+ y' \, t9 h% X( [* {
7.6 线程的执行时间
6 `! S& t, v, x% T$ G; h- o+ D7.7 在实际上下文中谈CONTEXT结构
! b% }3 o( G0 r6 L$ H7 S- e/ B2 H7.8 线程优先级. }' B- j: u/ ~9 s% f, r7 b
7.9 从抽象角度看优先级
) c3 K/ {; d, C- ^$ m7.10 优先级编程
; y6 \- Z7 i# E( ?: X' `7.10.1 动态提升线程优先级
8 Y. Y# i* N1 s2 A; \) g! Z7.10.2 为前台进程微调调度程序/ O+ \5 l) b( |
7.10.3 调度I/O请求优先级
3 s" j! Q; N2 e1 W$ C# E$ X' f7.10.4 Scheduling Lab 示例程序
  |& C, x  N4 n' @; N7.11 关联性5 D9 l; l* Z0 g- j; ^2 U
' D5 K6 Z- C5 k/ D, A( |
第8章 用户模式下的线程同步0 g1 T* C/ e* i( H0 z
& r$ e, J/ y9 g" @% `" b: p3 X
8.1 原子访问:Interlocked系列函数
( o- d7 p0 }1 ?( p) b, O8.2 高速缓存行
% q0 O: }- i7 y$ h" |8.3 高级线程同步需要避免使用的一种方法  @0 f, u9 N1 v! ^/ L. P- N
8.4 关键段9 \7 C# O( i3 b' w- C
8.4.1 关键段:细节% f: N* c- H7 U
8.4.2 关键段和旋转锁
6 q6 I5 {) Q- z  ]4 Y, a2 ]8.4.3 关键段和错误处理
5 x/ e! m9 W& u9 }5 e0 q8.5 Slim读/写锁
1 @4 F: q0 R. H+ m8.6 条件变量
5 Z: y2 r5 W5 e/ [. V8.6.1 Queue示例程序$ T- \5 v& M- _- D5 K% i+ p( l
8.6.2 在停止线程时的死锁问题
! W: f1 i  ?. p/ X" V. h" T5 ^8.6.3 一些有用的窍门和技巧
5 I- @0 w- ~1 w7 p7 P9 D& j! X' A
2 U: o& g1 N! R第9章 用内核对象进行线程同步  j7 w7 V3 V6 x4 Y& r# m$ O6 A. C

# a) u7 W. T0 E0 s% m& _4 ?& M1 \9.1 等待函数& z7 J" w- x% F3 [% j. }  u, c8 f
9.2 等待成功所引起的副作用
5 Z4 N# _6 Z/ ^, B. L4 J- T) P5 r9.3 事件内核对象
8 d/ k3 v$ j2 R& e3 p4 z9.4 可等待的计时器内核对象
' n/ j: j- q' \* [$ p, O/ ~9.4.1 让可等待的计时器添加APC调用9 B$ i) [8 G4 e0 ?( D3 v
9.4.2 计时器的剩余问题" a6 B: D" h+ ~% k3 M
9.5 信号量内核对象% W5 h5 K3 T6 V2 C& r
9.6 互斥量内核对象
, h) a" ^4 o0 ^; b# z" n9.6.1 遗弃问题, r0 I; e( C1 M( g2 y1 F% v  w2 g
9.6.2 互斥量与关键段的比较2 q, ^3 d( h3 v3 O1 e" a
9.6.3 Queue示例程序
* S0 a5 F& u8 o3 x# b! b9.7 线程同步对象速查表0 Q0 v% W0 N  V2 t
9.8 其他的线程同步函数
, X  e6 S( Q4 f- ?' J! \9.8.1 异步设备I/O
8 _9 `2 _0 W  l+ ?. J. Z9 @% d6 K9.8.2 Wait For InputIdle函数
- c3 u( I8 X- X  u: B$ {8 B# }9.8.3 Msg Wait For Multiple Objects(Ex)函数
7 c5 T. C" e1 o9.8.4 Wait For Debug Event函数
2 A" \" I+ @, u4 t* S% e1 z9.8.5 Signal Object And Wait函数
+ ~7 M. {; _) ^4 s8 e0 k! a) H9.8.6 使用等待链遍历API来检测死锁4 Z; Q, a* v1 q/ e
. Z* C) }3 V2 }
第10章 同步设备I/O与异步设备I/O
6 P( j, ]3 G7 x' _( X" m
* z( Q! N# J  Z3 M, I% }10.1 打开和关闭设备细看Create File函数2 ~4 |4 h6 ~8 E8 G
10.2 使用文件设备" D9 H; D4 T2 y/ g) I2 |( y9 d
10.2.1 取得文件的大小( H  x& ^. h( B% i4 B+ \/ `
10.2.2 设置文件指针的位置
8 ]& J/ V8 W% ^" o3 F& ~10.2.3 设置文件尾# v) Y& `! A# ?* g! Q
10.3 执行同步设备I/O1 q) W8 ?0 W+ t3 X
10.3.1 将数据刷新至设备( w7 W3 B2 e; d1 h  e) r* T% g
10.3.2 同步I/O的取消% i$ y8 S% u8 s& `& P# i6 O
10.4 异步设备I/O基础
: k, `5 u9 T: e10.4.1 OVERLAPPED结构
5 u: w% Y5 j7 \10.4.2 异步设备I/O的注意事项2 a# V8 m+ k7 ?, ~
10.4.3 取消队列中的设备I/O请求
# r: H& U) y  g5 s& Y' j10.5 接收I/O请求完成通知! N3 B# g9 c' G" B$ D% b
10.5.1 触发设备内核对象
) a- P+ z7 z2 d/ G5 O  }7 a10.5.2 触发事件内核对象
/ D- H' v! A8 V# T9 a10.5.3 可提醒I/O/ V' t4 ~& `, A) i$ W6 t3 Y& h
10.5.4 I/O完成端口* H: q' H1 J4 h8 ^
10.5.5 模拟已完成的I/O请求
: }" }' S, O5 N9 }: k* ~. X: r3 l7 H/ i
第11章 Windows线程池
& _/ }. O6 j. |/ X
: p& J8 _) }6 b, e: d& z# V11.1 情形1:以异步方式调用函数) x; Q( H3 R. }/ v0 V
11.1.1 显式地控制工作项" S5 _. j# a5 k4 t' ^! @" H  V
11.1.2 Batch示例程序7 y0 ~, l; G; F3 E1 ]6 p  [5 i+ C
11.2 情形2:每隔一段时间调用一个函数8 `# ?: g1 [& l/ ?9 c
11.3 情形3:在内核对象触发时调用一个函数6 L! U5 S' I) y6 A2 x1 W& w
11.4 情形4:在异步I/O请求完成时调用一个函数
5 J0 I: B6 [1 j+ g4 v; @2 U11.5 回调函数的终止操作& x+ J9 J) h; h' p& a
11.5.1 对线程池进行定制. J% L+ H$ W* W1 l7 y
11.5.2 得体地销毁线程池:清理组
' t, C1 S. R! S6 j2 ^% S: D' K2 m
, y3 o" m$ |4 R- [; k第12章 线程' G. M( e6 d& L- H

$ k4 y  I! N; \  _6 D7 U  u第Ⅲ部分 内存管理( L2 z8 O, F8 ?. f0 n, k$ {- Z- l, t
: X% h6 G. R  E# j7 }
第13章 Windows内存体系结构3 Q6 s) n( @1 l3 v" b$ ~, r8 }
9 v# f$ Z' ~) D& {5 x& f; X( r; K5 }
13.1 进程的虚拟地址空间
5 l& p4 _* t7 q/ A# ?9 P: |0 k13.2 虚拟地址空间的分区
7 ~# T9 X& l1 Q& g- n13.2.1 空指针赋值分区) u# {" L; D' q6 s# N' z0 U
13.2.2 用户模式分区
: [# ^& S; `$ _13.3 地址空间中的区域
3 g  p5 U2 W9 ?3 e9 y13.4 给区域调拨物理存储器% G% A! _# X* v3 l+ I7 I
13.5 物理存储器和页交换文件, X2 c! y/ ^% r- _0 {
13.6 页面保护属性5 u: |/ W2 o% ?6 [5 J
13.6.1 写时复制
& ~# `3 s6 H) V: r( [) ]8 ~13.6.2 一些特殊的访问保护属性标志3 l: Q+ b; e. g5 s& d- q
13.7 实例分析+ I, V1 s& w8 `0 m) i5 R, M
13.8 数据对齐的重要性
  J/ S- N* O+ t, W8 U  G$ o& \7 W# W
  c% q" f( r2 X4 d# _1 `0 h; G( g第14章 探索虚拟内存3 ^/ A6 u0 |9 s2 P! v& b* H$ M
' d- d9 f9 V; {5 U* v. ~
14.1 系统信息) g3 h( w2 t$ s
14.2 虚拟内存状态
3 `8 E* w) ?0 W) E% S9 p- l/ r% c# L+ f& X14.3 NUMA机器中的内存管理; f8 w9 r; ^* @5 Y6 }
14.4 确定地址空间的状态0 d; M/ m+ T; |: V
14.4.1 VM Query函数
7 {1 s! y% ~  K14.4.2 示例程序:虚拟内存映射8 _9 F4 Y, k& i9 w
/ ~* @8 V: T# T9 v7 K/ K5 }
第15章 在应用程序中使用虚拟内存7 Z( I0 e: ]4 L/ K7 |- A
: X5 v, \7 X" y; z- R: _$ @
15.1 预订地址空间区域5 w" ^2 y: W: V' |" r$ K
15.2 给区域调拨物理存储器
8 L- q. d$ I" J/ Z2 I15.3 同时预订和调拨物理存储器
2 N; H  h. |) b15.4 何时调拨物理存储器# t: E4 f: ~) l9 ~
15.5 撤销调拨物理存储器及释放区1 o: {; @. R) y. Y: K; h
15.5.1 何时撤销调拨物理存储器
9 p5 f7 x, d) Y  W1 b+ u. v, D) O15.5.2 虚拟内存分配示例程序
4 o  C' n5 l2 z9 @  p. N15.6 改变保护属性! @) I% |- i7 ^" P$ @) v& L4 ]/ f: Y4 t
15.7 重置物理存储器的内容
1 Z: u( [+ @+ c1 N15.8 地址窗口扩展
( V6 g0 q$ @+ s' q2 ~: T& p6 `4 ~" G$ L+ t2 x
第16章 线程栈
& d, ]( @2 q' b% c# z6 }( o  F3 A/ K
16.1 C/C++运行库的栈检查函数, x$ `; x5 O, O1 \
16.2 Summation示例程序
9 w( f6 r7 b! L2 j3 _) b+ P: ~9 v. h5 y
第17章 内存映射文件
' ]( u& }: N6 `2 A5 e$ r& m1 `+ C: c+ N5 X
17.1 映射到内存的可执行文件和DLL
9 r$ q9 h: a) `2 T0 U17.1.1 同一个可执行文件或DLL的多个实例不会共享静态数据- P5 b) R9 ]+ h) Z
17.1.2 在同一个可执行文件或DLL的多个实例间共享静态数据
( J0 P& a+ T7 l: Z0 j. R) j17.1.3 Application Instances示例程序( D4 R* j4 g8 z1 G# S$ {% `
17.2 映射到内存的数据文件
; q; [' q6 W8 r5 w  m4 K& M17.2.1 方法1:一个文件,一块缓存7 F7 P6 x2 \  t# T$ u
17.2.2 方法2:两个文件,一块缓存
5 ~( N( d+ E& J* Y8 h; Q17.2.3 方法3:一个文件,两块缓存- _2 H- p  J1 d" ^5 w" |; Q0 x1 ~
17.2.4 方法4:一个文件,零个缓存- r, x* @2 @3 M
17.3 使用内存映射文件
& X  F. D& y- C5 K$ {" f! S17.3.1 第1步:创建或打开文件内核对象/ w7 X8 O2 E9 c, A" Q
17.3.2 第2步:创建文件映射内核对象# r# ^  B/ s0 T
17.3.3 第3步:将文件的数据映射到进程的地址空间
/ X& g2 ?8 `( T17.3.4 第4步:从进程的地址空间撤销对文件数据的映射
0 \% z) O( R4 i5 l; M, L: a+ }17.3.5 第5步和第6步:关闭文件映射对象和文件对象: t, M" @7 ~3 Y* k
17.6 File Reverse示例程序- X: E2 \2 X* M  \
17.7 用内存映射文件来处理大文件
  F$ \1 @- ]$ A; F17.8 内存映射文件和一致性
6 C" H) Y) e# t7 f. T+ |17.9 给内存映射文件指定基地址
( F$ j- b; R+ a) c' ?6 m) ]5 P17.10 内存映射文件的实现细节$ h- W5 z3 u- B2 H6 |: e
: W+ n) {- L- K. d9 H9 M
第18章 堆* ]2 }/ }4 Q* g! R' h, q) |1 k
* m* W# o. p. j0 T' m
18.1 进程的默认堆
- x6 _' \( `' c: M# A& F& ]; L18.2 为什么要创建额外的堆# ~  M& {1 E* |. v; Y5 p" n6 v
18.2.1 对组件进行保护# @$ q. |, r. B9 E5 e
18.2.2 更有效的内存管理
# Y5 P5 y+ I9 W( g+ d18.2.3 使内存访问局部化
/ E3 Y% \" K# N4 b8 j+ Z18.2.4 避免线程同步的开销
1 P' V0 \4 w$ @( A4 `) |18.2.5 快速释放5 G2 A0 n2 O' ~5 d* V
18.3 如何创建额外的堆4 |. M1 q/ h2 e
18.3.1 从堆中分配内存块. M" k5 c) @  [$ H
18.3.2 调整内存块的大小; N; [& u0 Y" ?. Y- v: X5 ^9 n
18.3.3 获得内存块的大小  ^3 W8 Q# r, \. ~- g7 Q6 \
18.3.4 释放内存块6 b" p7 k( ~! U2 p2 |/ _
18.3.5 销毁堆
6 ~" i8 Z* K) p7 L) S18.3.6 在C++中使用堆
9 t0 g7 a( h0 v' p18.4 其他堆函数
% X1 ]6 @; m3 d0 B9 N6 Y: e0 i. n& ~4 G+ Y
第Ⅳ部分 动态链接库# X! I  F# [% A% y+ v3 I
/ n; n, a3 Y# b( |8 |, Q
第19章 DLL基础
+ {$ m3 K3 c; f& d% X' N$ T
2 w) f$ f+ H/ V19.1 DLL和进程的地址空间2 R- y% d7 V4 j2 x% B9 m* [
19.2 纵观全局
+ j  V  c# U& ~* j* X$ z. D' ^19.2.1 构建DLL模块
- @0 E- t8 C3 x: ?  J8 b8 E19.2.2 构建可执行模块
& x& Y7 F& g( F$ `19.2.3 运行可执行模块
  n  T$ w+ F% f, v& ?4 ]
! A; w, _1 a8 t8 v$ Y第20章 DLL高级技术" S6 Z. a% `. o  W/ [

. k/ H/ g* E4 Z' n20.1 DLL模块的显式载入和符号链接
  d% {/ k1 ?, ]$ M, E# y3 K% j4 V20.1.1 显式地载入DLL模块) ~+ b. C/ P6 B5 Y' a) `8 ]
20.1.2 显式地卸载DLL模块
& ?+ O1 U4 I4 U20.1.3 显式地链接到导出符号
* f/ T- @( t: B2 s4 M2 X20.2 DLL的入口点函数7 L- t; V' o$ n: n- W
20.2.1 DLL_PROCESS_ATTACH通知' j& m& L# s  \, k2 \2 ^
20.2.2 DLL_PROCESS_DETACH通知  R4 z( L) E+ F0 a& `
20.2.3 DLL_THREAD_ATTACH通知, K- P" E2 K3 u/ z
20.2.4 DLL_THREAD_DETACH通知
  x& J' y* \1 f/ F20.2.5 Dll Main的序列化调用
  M! g  G' n/ q+ t) M. o20.2.6 Dll Main和C/C++运行库
+ t9 c3 k, ?6 y20.3 延迟载入DLL
  l) _( g' [8 A, `0 i4 u20.4 函数转发器
; q$ z: A" f5 m. \' B, K' c4 F20.5 已知的DLL. p. u  b6 l, L; L! N8 J
20.6 DLL重定向3 B# Y9 v& m( s1 |  A& f( O, p
20.7 模块的基地址重定位9 b( e9 r% I, ^+ f
20.8 模块的绑定# t( l  `! Z( X0 B7 p; n

6 h% M! T/ [, C' f+ \5 C7 K6 t  F( L第21章 线程局部存储区
$ j* Z: K( x, ~" z& g' _
3 L  a7 ^4 D9 k9 x& q' I9 M* n- F. @21.1 动态TLS5 h' Y+ r$ y9 o( O- I; i# s: S/ C
21.2 静态TLS0  f  a' d* @. X  U1 s4 p

9 Q5 B1 j! x4 c3 C5 i9 ]4 K第22章 DLL注入和API拦截+ s2 ~& q2 _  {* S+ {$ p- y
" C( `& O' i- ?' G
22.1 DLL注入的一个例子/ Y6 v4 [% \$ v
22.2 使用注册表来注入DLL
( z6 g9 C$ }# V& P( U7 ?6 f22.3 使用Windows挂钩来注入DLL- m) z+ s* p" f7 x) s$ e8 `
22.4 使用远程线程来注入DLL
3 {8 B1 `% I# y' J5 p5 P& m22.4.1 Inject Library示例程序9 s  r' m: p3 A0 F
22.4.2 Image Walk DLL: l* `8 ?% @6 t2 h. N! y7 N
22.5 使用木马DLL来注入DLL
/ I2 E" o% J. b2 P5 e! D22.6 把DLL作为调试器来注入9 e7 F0 b; n1 k# @, \$ @1 A$ ^
22.7 使用Create Process来注入代码
1 J( [5 x) [  o* l22.8 API拦截的一个例子9$ a2 Q8 w; x3 c8 ~4 i6 E. B
22.8.1 通过覆盖代码来拦截API03 Z9 h- {  B2 n% Z* w; O  n
22.8.2 通过修改模块的导入段来拦截API) I# k* v) ?/ k# e& F* Q8 j
22.8.3 Last Message Box Info示例程序
+ h1 G4 C/ U* b" ]- f: R: L+ j0 a8 T4 G: N2 E
第Ⅴ部分 结构化异常处理
8 D+ l" z3 f! ^, o- Y' `) U4 d; j! z* Z+ C  `
第23章 终止处理程序
9 D. z9 @; V% U
) d8 t) [) [+ m6 F第24章 异常处理程序与软件异常
9 R: T$ i* ?( Y; S6 ]; ?* Q7 Q$ @3 L) x" ^
24.1 通过实例理解异常过滤程序和异常处理程序
! _6 d' z6 p7 d" r" Z( ?5 A* A24.1.1 Funcmeister1函数
+ x9 J" s3 _" P' a24.1.2 Funcmeister2函数. X  D' t: f  W3 X! J) V% t
24.2 EXCEPTION_EXECUTE_HANDLER1
8 U% ]! I% C( ~+ \24.2.1 一些有用的例子5 E6 P3 [) C1 n3 {0 ]0 }
24.2.2 全局展开' `1 |1 f/ [* Q' O6 T  h
24.2.3 停止全局展开" i( R# K# J6 {& r  g. E1 [
24.3 EXCEPTION_CONTINUE_EXECUTION
( o4 q4 {+ g' z5 h  A$ f24.4 EXCEPTION_CONTINUE_SEARCH0" N. a  Y) F! w1 Z
24.5 GetExceptionCode2. @+ d. L6 I6 X# c* j* E! }
24.6 GetExceptionInformation6
: A5 m! {9 U; z6 i# I$ X" D24.7 软件异常
! X7 J, i$ G& Y5 h; ^- T! v0 T8 h
; Z5 R$ M; n% V5 ?第25章 未处理异常、向量化异常处理与C++异常" O3 |; ^) ^* w+ W. ~% P
& a) i; Z5 D5 E# K0 u1 R5 D9 C/ R
25.1 Unhandled Exception Filter函数详解
- K6 ^* |9 W* C3 {( G( `0 j0 H' ?25.2 即时调试
: N4 f3 }/ o' K25.3 电子表格示例程序# T+ {0 W* @3 D7 i6 p! p- ~" {- L, [
25.4 向量化异常和继续处理程序
& ], v% |6 r& T3 ~; {7 ^! ^9 l25.5 C++异常与结构化异常的比较! h+ k/ j- U7 j' O. _3 V/ B
25.6 异常与调试器
2 p1 S2 j) X) Z$ u" ~3 l
4 L; t- T" @" s& N: Q第26章 错误报告与应用程序恢复
: |8 L2 z' r4 y1 L; a2 _" S4 w4 Z0 U0 G) E4 m1 s# b! t( _4 h. N
26.1 Windows错误报告控制台% B9 P- Y  e: Z4 Z
26.2 可编程的Windows错误报告$ ^* M/ U$ J% m% ~$ d
26.3 对进程中所有的问题报告进行定制
' P( X/ l# p: e$ w1 H- U26.4 问题报告的创建与定制
4 p8 L  j% p& B" t, [0 t: ^0 W0 x/ b% K( b26.4.1 创建一个自定义的问题报告3 t4 [7 `( |2 Y& r7 x( j# y
26.4.2 设置报告参数:Wer Report Set Parameter
+ `$ A. T' Q' J% Q, }; p6 p  o26.4.3 将小型转储文件放入报告:Wer Report Add Dump 8
6 O; ^+ e0 p! {: ~5 Y26.4.4 将任意文件放入报告:Wer Report AddFile 9
& b! u7 S" j5 C26.4.5 修改对话框文本:Wer Report Set UI Option / f9 ~0 N4 _! ^6 L6 i: Y
26.4.6 提交错误报告:Wer Report Submit
/ F) j, U8 K* d' b/ r26.4.7 关闭问题报告:Wer Report Close Handle
& Z5 G/ \7 W0 Y) ~& [/ P% a1 r3 V) j26.4.8 Customized WER示例程序- R. r5 j0 f( E9 P7 T  P/ u# Q
26.5 应用程序的自动重启与恢复" {5 c+ i+ U: M, L5 X' p
26.5.1 应用程序的自动重启, Z7 C5 [# Q/ q% [) X% g
26.5.2 对应用程序恢复的支持+ x1 N0 p( Y4 ]" i( E, I2 B8 X5 F

! T! m% ]" q3 _% B+ h: v0 C第Ⅵ部分
# s+ \% Q" t: q8 ]+ u6 v$ q9 D7 O3 s3 x% ^9 x/ j$ k
附录A 构建环境5 m$ u- y' H+ g& w

9 _' B; T6 \1 @4 u( P5 q附录B 消息处理宏、子控件宏和API宏
  q) }- Y- a! }) k
& k, B, H; O! m* @. }3 l索引, b% [3 X& |) T0 d# {
1 M9 }, c1 x% e2 _5 R% j  O, X
楼层
跳转到指定楼层

发表回复

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

本版积分规则

关闭

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

    移动客户端下载(未启用)
    微信公众号

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

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-1-23 21:55

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