QQ登录

只需一步,快速开始

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

主题

帖子

荣誉

管理员

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

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

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

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

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

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

x
TB1tChLKpXXXXbnXFXXXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg
5 a8 g- _/ a/ a) F" B! B' i
" U7 _7 M  L5 V, \9 B
书名:《Windows核心编程》(第5版)7 O6 R. i# ]# [, l
作者:Jeffrey Richter,Christophe Nasarre+ C5 P0 q; `  F2 F( Q% b
译者:葛子昂,周靖,廖敏5 ^( ]! N+ {/ I( O7 u% y
出版社:清华大学出版社
* Q& T$ j; Y8 l0 e出版年:2008年9月1日(第1版)  K! [$ J3 X; G; C7 t+ I( L
定价:99.00元) G( b' }0 \' @5 u% j9 p/ S. S+ D
装帧:平装
  o  Z. C; _! wISBN:9787302184003
5 f: F) E. c' e# Q; V
* a& b% s+ J6 l" z' L, `3 J: r购买链接:3 m1 {' ]2 N1 P- T2 r2 C! A: [

" L( ~. b& S4 a3 |

7 c  A- v$ \5 H1 Y6 f" ?" A0 ?. L亚马逊 -> 传送门
; E8 O' B! Z: I; W
$ ]. p& c  F1 _2 [- L' Q当当网 -> 传送门
" m5 }0 |2 c% O) }& B' H  a# n1 M9 i: n
京东 -> 传送门. z: p, n7 m* L4 u# H
- I1 m$ y: L. L- K( d0 L
天猫 -> 传送门# t2 j3 u/ T' A: h2 R( K
/ T7 [' f; }' F+ Z

% }' _! X* P0 b/ L( L( a内容简介:
$ s0 b3 Z# Q: o& N3 O6 e/ b4 b" M  a- _6 \) _


5 r) c" V2 j7 b) L《Windows核心编程》(第5版)是一本经典的 Windows 核心编程指南,从第 1 版到第 5 版,引领着数十万程序员走入 Windows 开发阵营,培养了大批精英。《Windows核心编程》(第5版)针对 WindowsXP,WindowsVista 和 WindowsServer2008 全面修订。主题广泛,内容丰富,讲解深入而精辟。透过这本 Windows 编程经典,我们可以在专家的悉心指导下,洞悉 Windows 编程精华,深入了解高级编程技巧,编写出高性能的 Windows 应用程序。6 e; `; [3 D7 A1 Q
. P! g8 D" h3 @  ^+ F  y
本书重要主题:
- w) b8 u' d6 O1 ~" I0 g/ H: i  m. q
  • 如何为 32 位和 64 位 Windows 系统构建和实现应用程序?
  • 如何新建和处理进程与作业?
  • 如何调度、管理、同步和销毁线程?
  • 如何通过 I/O 完成端口执行同步和异步设备 I/O 操作?
  • 如何使用虚拟内存、内存映射文件和堆之类的各种技术来分配内存?
  • 如何处理默认调拨的线程栈物理存储?
  • 如何为延迟加载、API 拦截和进程注入构建 DLL?
  • 如何使用结构化异常处理、Windows 错误恢复和应用程序重启等机制?
    * C" T1 N. K5 z% l- k

6 Z" |. E( m  W4 E. U' M' r
" a- A% w6 f( z) x: c5 L目录:5 C, Q( \' D, t- r- G* P  z# |) y+ J

) `; V3 S* a" z  E5 w1 x. B# B5 \

2 W/ C7 w$ d1 q8 ?2 N6 Z* Q  K( j第1部分 必备知识
2 M) r2 c% n( G4 D% b3 H' i( p) Z* J+ t, c
第1章 错误处理/ d8 w0 G; d6 j# R- i8 h
3 J$ I9 {4 l) Z1 ?+ d$ G
1.1 定义自己的错误代码
5 @. u8 X: }: m) b0 E  l( w) g9 C+ m1.2 Error Show示例程序
$ u& Q5 c7 |8 i! b& x) |! S
$ b) ^& v9 O. c1 M# |! P第2章 字符和字符串处理
' Q& V1 Z  t8 U! I5 i+ G4 r! l' K" ^1 Q& e$ b, D# S
2.1 字符编码7 B+ l% }3 E# n. Y4 r: N. O! x+ }
2.2 ANSI字符和Unicode字符与字符串数据类型+ x. k! G9 W! j% V) i( C; _
2.3 Windows中的Unicode函数和ANSI函数- k6 a- w; r  S' o2 ^
2.4 C运行库中的Unicode函数和ANSI函数) D' _5 R, }- L& h2 d
2.5 C运行库中的安全字符串函数6 R, e7 L( P6 s! A0 {- R5 ?" \
2.5.1 初识新的安全字符串函数
1 g8 ?# {3 ]0 e" Z& R2.5.2 在处理字符串时如何获得更多控制
' ?3 Y6 L' u7 L% ~0 I( w, [2.5.3 Windows字符串函数  o9 m* U$ F. b" s4 Y! i
2.6 为何要用Unicode0 w4 r( q: \+ J+ D6 n' g$ {
2.7 推荐的字符和字符串处理方式
7 p8 V: I" }* o$ g  X& a/ K5 B2.8 Unicode与ANSI字符串转换
* D4 W, y, a5 l" F4 q2.8.1 导出ANSI和Unicode DLL函数" ?6 j" O  d% x( }
2.8.2 判断文本是ANSI还是Unicode6 Y& |4 T, n" f- X

0 H/ l) U3 p* a/ O# v4 G. B第3章 内核对象
# {2 I3 X( @9 ~; f$ M) W6 X  i9 }! i# I2 W
3.1 何为内核对象: E! B" ?! l# F6 i, [, _
3.1.1 使用计数# b& j# s8 t/ M. X7 `; P
3.1.2 内核对象的安全性+ [6 X  K" l$ j' N  X
3.2 进程内核对象句柄表
- o6 I4 Z! \" {6 g9 |3.2.1 创建一个内核对象
* x, Y! u+ J9 b; d$ O3.2.2 关闭内核对象6 w, t9 _: R7 p' K
3.3 跨进程边界共享内核对象; E3 U: N$ I* ]; P1 |2 x
3.3.1 使用对象句柄继承) f& d, J% @9 w5 \* p( z
3.3.2 改变句柄的标志: o- ?( T' c+ A- V+ K0 Z+ Q
3.3.3 为对象命名
& q$ g& A3 R  k3.3.4 终端服务命名空间
. o) Y5 p8 z5 J4 z, E( Z9 h3.3.5 专有命名空间
, i) t3 ^+ H- f+ ?* [; E3.3.5 复制对象句柄. I" x) u* O2 l' B  {7 [( P3 V# G* r" d

. S& y9 S: N' J$ d/ c# k第Ⅱ部分 工作机制7 z" T1 P6 ]+ N. c$ {- m8 Q

& y6 s; s0 \4 e% [. N! [8 B第4章 进程5 t3 R. O6 ^: ~

5 D- G" w) t+ X3 V, K4.1 编写第一个Windows应用程序
8 y- M, `, [+ q9 N* o" A0 F4.1.1 进程实例句柄) k9 T* a" m& a) t. i* F. I
4.1.2 进程前一个实例的句柄0 A. J  a/ ~6 O! h. N
4.1.3 进程的命令行% X1 m3 a& o3 L: H) B- X# h! c: i
4.1.4 进程的环境变量1 X3 z* a' m4 D- e6 ^
4.1.5 进程的关联性4 P" G% k6 b" k- m
4.1.6 进程的错误模式- I' ], z: ~% \2 E
4.1.7 进程当前所在的驱动器和目录
8 F& R' f1 g' ~( ^4.1.8 进程的当前目录
0 o. b4 g+ Y- c- V! Z" ?4.1.9 系统版本' S/ T2 T3 x& Q' N/ l' K
4.2 Create Process函数  a3 s9 a9 _1 @+ X, \7 Z" u8 C& t8 T
4.2.1 psz Application Name和psz Command Line参数
' r7 `' z+ H. E. w4.2.2 psa Process,psaThread和bInherit Handles参数
: s& h) G  h- x2 n( Q6 b1 j. b- \3 @9 l: a& M4.2.3 fdw Create参数
$ O. d7 c* a6 W5 U: K! ]4.2.4 pv Environment参数
; g) E, x$ h# h1 Y6 a4 h4.2.5 psz Cur Dir参数* T9 D, {! W2 ?. ]8 t
4.2.6 psi StartInfo参数
: L" Y2 ]  Q7 f, \4.2.7 ppi ProcInfo参数
. {& Z; w+ A( @: p) y' \4 E+ O4.3 终止进程& ]* [0 C. o4 C% V( c# e, _
4.3.1 主线程的入口点函数返回
2 `- l: R% ^; W! R5 [4.3.2 Exit Process函数6 n& ]+ ^( Z) b. H$ A4 R
4.3.3 Terminate Process函数
' S- R" J! D" P/ \9 h4.3.4 当进程中的所有线程终止时
3 b* Y# b- a' A: L$ t; q" Z2 ?4.3.5 当进程终止运行时, l3 r6 J7 H; ~0 |
4.4 子进程
5 O& C( W0 q; |: p5 t4.5 管理员以标准用户权限运行时3 _8 u; c- s! n7 v) `& D
4.5.1 自动提升进程的权限
/ I4 m& s* S. G' `0 X, \3 c, E4.5.2 手动提升进程的权限* _5 D# L5 I; P
4.5.3 何为当前权限上下文
# S3 Q" ]! x) Q& d, O8 r2 x: u4.5.4 枚举系统中正在运行的进程  B" W  V3 B6 a) U. k. U' B
4.5.5 Process Information示例程序) _" S, T4 t% l/ E; e- _
, O( g+ [! E: P9 h" K
第5章 作业: Y  Z& W9 r8 k1 M
' M; N9 @7 @: q, s2 i: W( f
5.1 对作业中的进程施加限制
5 X2 }: i7 F0 k! L1 B5.2 将进程放入作业中1 D' G6 o; v7 b$ T! a9 u2 r* z7 j* w' C5 N
5.3 终止作业中的所有线程查询作业统计信息
2 Q. f( p" }. K/ y5 j" e5.4 作业通知
- h' P( O2 L6 Z' p/ @( O5 F1 m5.6 Job Lab示例程序4 y0 D5 M, W% k% K" X: w' ]
5 O& z- Z: L, s% I7 G; w
第6章 线程基础! j4 _1 C" I; p$ |. x

$ j1 p5 f1 }% K* q+ Q" H3 ^6.1 何时创建线程6 \8 {- ]3 t) E# d6 [8 a. k
6.2 何时不应该创建线程
' ~) a0 T' @7 x. z' {; q' R) K6.3 编写第一个线程函数' @' e* p1 c! v3 j1 }$ Z' T
6.4 Create Thread函数
) G% ?* B: {: R: N' x6.4.1 psa参数( m$ }( z8 e: E
6.4.2 cb Stack Size参数, s( r1 O$ v# ~/ s8 U( K  l
6.4.3 pfn Start Addr和pv Param参数
3 a% d# ?0 e% _/ O0 M6.4.4 dw Create Flags
) C" u7 u$ L+ I8 f6.4.5 pdw ThreadID7
$ C0 h: G" T/ N" C1 X/ z6.5 终止运行线程5 U# a; @+ `! e7 p' D2 ]% v1 e
6.5.1 线程函数返回
* _& S6 f/ z0 `8 D. z5 L6 _/ w- j6.5.2 Exit Thread函数" w0 s( Z6 r; @. c: `% F
6.5.3 Terminate Thread函数4 j7 q6 |& G+ ^
6.5.4 进程终止运行时) T* s1 B5 H- b1 m
6.5.5 线程终止运行时
, Y5 z* Y; P4 P6.6 线程内幕
" f: r  V% [$ v9 e* y3 S. F* L6.7 C/C++运行库注意事项
; K6 z5 \5 D; w- b0 [5 Q- v6.7.1 用_beginthreadex而不要用Create Thread创建线程
2 p3 g2 Z0 }8 }; x- H" p" b9 c" r6.7.2 绝对不应该调用的C/C++运行库函数
4 i+ l5 j2 D+ y  `6.8 了解自己的身份( I- s; |! R- |2 w+ {, G
6.8.1 将伪句柄转换为真正的句柄
! b" F1 ], r4 {2 b' P2 ^4 R+ Z. @; j! s2 l7 W) i0 L1 F8 X: |, b+ U
第7章 线程调度、优先级和关联性" }: c% P% W- q/ V% |4 k
  e1 l2 y: a& Q! I
7.1 线程的挂起和恢复
6 J% \, X6 ^6 }8 R4 T/ j+ Z  x7.2 进程的挂起和恢复
: m8 X% r# P# Q  f  c7.3 睡眠
% s& s4 G  C' A8 _7.4 切换到另一个线程) x8 R8 P  g# C' h) O& R4 M
7.5 在超线程CPU上切换到另一个线程
" c! P  i1 i* w+ N( b1 R5 Q7.6 线程的执行时间
4 {3 a: Q2 }9 @7.7 在实际上下文中谈CONTEXT结构; Z& g' r; |3 K; M
7.8 线程优先级6 S$ H  @" d( o( D' [. r% z
7.9 从抽象角度看优先级4 n6 z9 u; p! \9 r
7.10 优先级编程
& Q: x5 j8 s: E# r; M& z7.10.1 动态提升线程优先级; O9 I) _: s8 U
7.10.2 为前台进程微调调度程序! ?/ a6 V8 i* I) [7 X( @, }
7.10.3 调度I/O请求优先级# X* H9 z: R0 `: `: L. X2 x. k7 V5 f
7.10.4 Scheduling Lab 示例程序' b! {* c0 r& r' c8 X7 d
7.11 关联性
8 F& m& |, n" g: Z
2 O: z, ?+ q# v' P! {" B) M第8章 用户模式下的线程同步) K( H7 N  ^- L( D( M" O3 A$ M$ j
5 H: k: ~( }, n% w8 O. F. q
8.1 原子访问:Interlocked系列函数8 p0 U- D! ~1 b& y/ O4 d- Q1 T0 Q
8.2 高速缓存行
! Y2 K4 X' k- ~/ w4 u* I/ p8.3 高级线程同步需要避免使用的一种方法" U1 ^1 g0 w9 n  u, i
8.4 关键段$ Q# y. M% g6 Q+ B0 V- S
8.4.1 关键段:细节6 w. D% B/ M8 D# \9 _" ]) T
8.4.2 关键段和旋转锁) L, B/ Z7 w' P5 x" s5 \. u
8.4.3 关键段和错误处理# E: D1 ^/ L% Z' K0 Y
8.5 Slim读/写锁' w& ^) [5 [5 V1 U4 R" `$ `; v8 v: H
8.6 条件变量
2 ], @% ]+ F) v, x3 f; h8.6.1 Queue示例程序. `% }- C" j- l1 M8 R# P
8.6.2 在停止线程时的死锁问题
, n# t  l: k9 i/ x8.6.3 一些有用的窍门和技巧8 Q: a; J1 k, o; [6 |& G
2 m: I0 A. m# l; _" @; B/ R
第9章 用内核对象进行线程同步: g# {% R  ^8 _$ ?

) e5 D6 ?& K% L- A% z9.1 等待函数
) Y- j! b' H" q# L( K9.2 等待成功所引起的副作用4 [5 S& ~$ s- K2 b
9.3 事件内核对象
8 w4 W/ {9 J/ B- X1 W; ~" m9.4 可等待的计时器内核对象
& |" p5 Y( m1 N3 R2 s/ d9.4.1 让可等待的计时器添加APC调用, G/ }8 p- h2 {8 }: J# u
9.4.2 计时器的剩余问题% L2 K6 g; M# {3 A: d1 O. |+ m
9.5 信号量内核对象) l* c1 t  ]6 e, p9 ^9 ~. G4 B
9.6 互斥量内核对象2 Z7 Q8 U& c' C4 G. L
9.6.1 遗弃问题  l! F7 B" k3 n! T# d; h
9.6.2 互斥量与关键段的比较% r+ @2 m$ _$ D7 z, ~
9.6.3 Queue示例程序" j0 e( Q( L( T' g6 d% p& X
9.7 线程同步对象速查表
# j/ ]2 D% D: p2 `& M+ U9.8 其他的线程同步函数% E/ h/ c& U! j1 q+ W
9.8.1 异步设备I/O
  i3 _) G- S5 l3 T9 t* [9.8.2 Wait For InputIdle函数
. ?7 F9 S& z. X7 B4 e% }9.8.3 Msg Wait For Multiple Objects(Ex)函数
( i$ K8 K" A1 ~4 C: D7 [9.8.4 Wait For Debug Event函数5 A. D* A! U8 J: p+ ^0 n
9.8.5 Signal Object And Wait函数' H& H" U# q/ z2 x; e! d
9.8.6 使用等待链遍历API来检测死锁0 q! L5 j/ m# G& ^

( X3 w9 A0 C$ z+ P7 g2 s第10章 同步设备I/O与异步设备I/O
7 C  f! Y! j1 Q. ^6 g3 k3 D
2 L7 `+ R4 k/ Z10.1 打开和关闭设备细看Create File函数. H8 o8 E: f# H* ]& E/ B6 @+ N
10.2 使用文件设备# B) z8 _/ f; ^9 U3 s
10.2.1 取得文件的大小
" j$ q, ]( e8 e0 v; B. `10.2.2 设置文件指针的位置7 L6 J$ Z. ]( W6 j) H8 l
10.2.3 设置文件尾% t/ M8 Z' L# Y- ~% B' P: L
10.3 执行同步设备I/O$ c  X1 @8 [* {6 q
10.3.1 将数据刷新至设备6 i) J! R5 }# s6 M, [3 e
10.3.2 同步I/O的取消
( X& Z9 D; Y: C) V6 N10.4 异步设备I/O基础
1 p6 t$ s: m& D10.4.1 OVERLAPPED结构
4 _- G6 o8 \1 ~7 |6 q10.4.2 异步设备I/O的注意事项
( c) y. W4 t- U+ W10.4.3 取消队列中的设备I/O请求# x" k5 O' v2 m. B! O' L0 F, W
10.5 接收I/O请求完成通知# r9 U$ b2 x7 @. K+ _  q/ S
10.5.1 触发设备内核对象0 D. k0 G: z: ?' R- _- |0 }
10.5.2 触发事件内核对象
* w. C9 L; ^  ^5 |, x& o. ]10.5.3 可提醒I/O( k7 \+ P. Q% z+ W6 Q( X
10.5.4 I/O完成端口. X3 O. y' |7 h6 I9 y7 b
10.5.5 模拟已完成的I/O请求# }) [& M9 H. B

( i' M  v7 W# O第11章 Windows线程池
* w  L2 N2 K5 F8 y- X. o
) ?  i1 t  p5 H2 W0 G4 Z7 u1 J11.1 情形1:以异步方式调用函数
% S# j: [' q; m5 O5 R; k11.1.1 显式地控制工作项) B% c. {  w( o5 s  ~5 g
11.1.2 Batch示例程序& s& V5 q- L" C
11.2 情形2:每隔一段时间调用一个函数3 j  S4 o/ i' p2 i# q( v% L
11.3 情形3:在内核对象触发时调用一个函数
- l& w( u4 v/ S( i$ f+ M11.4 情形4:在异步I/O请求完成时调用一个函数
7 L) v* k8 {& G. X$ R11.5 回调函数的终止操作
  ~$ `( l$ k: o0 `0 R5 L1 D11.5.1 对线程池进行定制3 x0 s) ^" j& r" |. R
11.5.2 得体地销毁线程池:清理组$ I1 q! B: [0 e7 \) a

: j8 A" ^2 M+ ~1 U. p5 t$ y* g$ u第12章 线程
2 z: E& s) p" }) K8 e0 ~  o4 P6 L
  F; D8 ^/ y& k第Ⅲ部分 内存管理4 ]! D# z6 V1 B' X) Q0 u
! a. O8 S9 V) o" M
第13章 Windows内存体系结构
8 @6 J+ g4 p( Q! G: D! E1 o
) {7 h  G* u4 e: H% I13.1 进程的虚拟地址空间
. }  q7 r0 T: H& `7 n  }9 p13.2 虚拟地址空间的分区
. D8 o* |8 G8 K3 K13.2.1 空指针赋值分区7 C6 A/ j0 b- }" I% @$ @$ E
13.2.2 用户模式分区! l' |7 D+ J7 o# t9 t
13.3 地址空间中的区域! {" D8 Z7 ^2 m! n/ d& ~+ }
13.4 给区域调拨物理存储器
% Q7 B( P' z. \  ^  s13.5 物理存储器和页交换文件
  x. f/ }# i1 Z- X7 S/ O1 N13.6 页面保护属性
6 M* x# S3 O$ ]  q! y13.6.1 写时复制/ r% p/ E8 W8 @  ^" n
13.6.2 一些特殊的访问保护属性标志' b# t- f  Y$ @2 @2 P
13.7 实例分析
6 P; g2 D! S7 @! ^5 `13.8 数据对齐的重要性
- |: K; G& T* y0 L+ S
" V2 l! H7 L+ }' ]第14章 探索虚拟内存0 W4 G' i; r/ i4 d, Q1 Y' S

$ R9 l7 D6 h" k' \: ^+ L14.1 系统信息
# K/ B0 `: Q5 X& \1 Z# q: I. _$ w14.2 虚拟内存状态$ ~1 K3 m7 |5 A. e3 M
14.3 NUMA机器中的内存管理3 k) w1 [3 p( ]! T' {
14.4 确定地址空间的状态
6 |* w- T( _/ d; {4 S: G# H3 b14.4.1 VM Query函数
; U2 _8 `$ j8 h7 Q14.4.2 示例程序:虚拟内存映射
+ q$ J" R$ Y$ V) ~& y) l+ C" I7 r( _; T& X9 _" W0 s- v5 Q
第15章 在应用程序中使用虚拟内存
/ f, a: I6 l! D: g2 S
( q" C! h* h& [* p4 p5 x0 L" S9 \15.1 预订地址空间区域5 {* U# x( K2 v6 f. ^
15.2 给区域调拨物理存储器" s6 w( V, \! a6 T. N5 D
15.3 同时预订和调拨物理存储器3 N) e2 c: H2 L# `! A0 a
15.4 何时调拨物理存储器# I6 R8 q) p, B3 L& _. E; o5 ~
15.5 撤销调拨物理存储器及释放区- X& H6 I0 \* ~! e# Z+ `
15.5.1 何时撤销调拨物理存储器
4 A4 |, N: \% c; |& B15.5.2 虚拟内存分配示例程序! W6 _& N1 t" J. @3 t2 u, ]5 Y
15.6 改变保护属性, H, O" F+ T/ [* \0 e& T
15.7 重置物理存储器的内容1 ^2 w+ l. C' a" j( n+ A% t
15.8 地址窗口扩展5 X; B3 Z; p3 ?  Z
8 y& ^4 S0 L  V: C# B8 d) M$ D
第16章 线程栈
# s( x5 p5 p+ h- a% _# N1 @; \9 [" O: `9 `0 Q/ i4 d
16.1 C/C++运行库的栈检查函数
2 E* a& E' U( C16.2 Summation示例程序
/ _/ `3 _+ ^, v+ G: Z( {/ ^1 w0 ?6 H8 W  L: H( |+ `2 k
第17章 内存映射文件
$ K% m- A) C  Y; W/ |
' t0 I) p6 E! q. M+ g6 H17.1 映射到内存的可执行文件和DLL; _9 ?, E4 e- a9 N7 I  ]  l/ c
17.1.1 同一个可执行文件或DLL的多个实例不会共享静态数据
. y4 u: N8 C3 K/ W) f17.1.2 在同一个可执行文件或DLL的多个实例间共享静态数据3 d& ?6 d. ~: y% ]; @1 x
17.1.3 Application Instances示例程序
4 ], L% V! f. {9 i$ [17.2 映射到内存的数据文件
$ U" ^/ C5 |9 d! c* r17.2.1 方法1:一个文件,一块缓存
0 d) n4 Z! q( X0 R17.2.2 方法2:两个文件,一块缓存* E3 X9 v8 b" e
17.2.3 方法3:一个文件,两块缓存' `2 u5 O% L) w* P! j6 }" j* C
17.2.4 方法4:一个文件,零个缓存
+ o0 D( c3 [3 E* f17.3 使用内存映射文件6 _% g: E/ g, s) E- j5 A
17.3.1 第1步:创建或打开文件内核对象
8 Y7 \# A8 d( ?2 i17.3.2 第2步:创建文件映射内核对象
  ]; B: }, J/ \* q% C5 X7 U3 J17.3.3 第3步:将文件的数据映射到进程的地址空间
) X" a" a# w9 T# {* f& g% r. t17.3.4 第4步:从进程的地址空间撤销对文件数据的映射
6 r4 l2 _- y3 I# P17.3.5 第5步和第6步:关闭文件映射对象和文件对象
! V' v2 g9 F2 {+ M5 C; e$ V, o4 a17.6 File Reverse示例程序2 B7 L: w# W& X* C
17.7 用内存映射文件来处理大文件
6 S* J" }: [$ [' x" F0 b17.8 内存映射文件和一致性% r/ J7 Y" D; i1 N* K- k% G: M; q
17.9 给内存映射文件指定基地址; L; A% m- W# C0 m1 p- u9 t
17.10 内存映射文件的实现细节
! }* n% b; h! ?- ^# [+ c
: n2 n6 P- M' h; B1 t第18章 堆
$ E/ Y" j7 }) K; H0 T
% I4 v$ [8 J. A1 A6 x1 X18.1 进程的默认堆* |: k8 E1 j! S" u3 ~
18.2 为什么要创建额外的堆
9 _0 l7 U3 e. X% f. w5 l. J3 x$ b18.2.1 对组件进行保护7 j) ~! @2 N2 n9 V/ ]) _% \5 I
18.2.2 更有效的内存管理
8 b; F# P$ Y) u18.2.3 使内存访问局部化5 M7 U7 `. J$ ~
18.2.4 避免线程同步的开销
" z0 |* j) I" `2 U( G; n; A18.2.5 快速释放7 m% N3 `2 ^/ h" l% }( b: y
18.3 如何创建额外的堆5 u; g0 J6 v1 m) U0 A; }8 u
18.3.1 从堆中分配内存块9 Y0 n) }/ o. @/ N: f2 R
18.3.2 调整内存块的大小; z( v9 H/ q8 h9 ]( y
18.3.3 获得内存块的大小
# T5 J3 ?/ s: J# O6 y6 J" s8 T18.3.4 释放内存块
  w3 f# h- P  N18.3.5 销毁堆
5 |1 [% b9 J0 U) k! [+ r( {18.3.6 在C++中使用堆
. \2 f$ G2 s0 L0 D+ h9 }- m/ n8 e/ `18.4 其他堆函数
! F5 d& y+ Z) B# C  g. e9 C& O. D4 U% R$ _- P
第Ⅳ部分 动态链接库
9 x# H& s: \9 k% n* ?
% L2 z5 I  r$ {4 ]; a- n第19章 DLL基础
7 b' w  k, t/ c" K# c/ E6 `
6 w/ I7 q2 p( }6 H5 N; ?19.1 DLL和进程的地址空间9 r& h8 k# E* D( y% b# {
19.2 纵观全局8 A) @/ a$ _- E) E) O& r
19.2.1 构建DLL模块, A/ T3 M/ z, r  [6 e2 \
19.2.2 构建可执行模块
- \7 U) K: ^, ]- g19.2.3 运行可执行模块6 G# K8 G$ S1 F$ u3 O& ~6 z
" ]$ w( [& m  p* F+ h" T  y- ]/ ~+ \
第20章 DLL高级技术
! b$ f: q* C( T- f4 [
2 M: e& {  \# h, L* g+ L6 E% T  `0 U20.1 DLL模块的显式载入和符号链接
1 w7 `/ {6 D) k3 [1 p20.1.1 显式地载入DLL模块
. F6 W: o: o0 G3 B% D: U20.1.2 显式地卸载DLL模块# ^+ B5 N# R* G! ^6 Y( ~4 ~2 d) m% f
20.1.3 显式地链接到导出符号
% `6 c) E' c$ T) T8 R20.2 DLL的入口点函数2 Q) ]" S& {+ f7 i& u/ a* n4 W
20.2.1 DLL_PROCESS_ATTACH通知
9 {" j* S. w+ e2 k20.2.2 DLL_PROCESS_DETACH通知
) n" J: y. p3 v2 Z  e20.2.3 DLL_THREAD_ATTACH通知0 U# k7 V9 H/ ]! Y
20.2.4 DLL_THREAD_DETACH通知
, h3 M0 [% k8 f0 s9 N20.2.5 Dll Main的序列化调用3 @) e3 l8 R, w2 a8 e$ d! ?# C; f
20.2.6 Dll Main和C/C++运行库1 S. Y7 u( J/ M' a7 k$ O. i
20.3 延迟载入DLL
; ?$ o7 s; T3 e  q, j7 G% [" o20.4 函数转发器
, R1 {$ _0 \2 l20.5 已知的DLL3 d/ M4 ]9 G1 L# R9 l+ r0 J
20.6 DLL重定向# q4 x) I8 o9 q0 e
20.7 模块的基地址重定位1 e, E) @4 S' |! D: I" a
20.8 模块的绑定
: N4 h3 I3 ?4 k- S; s! G9 I7 K
/ T" O" ~- C, Y  I& m5 b第21章 线程局部存储区
; z7 j2 d) x- k3 p! t/ d
) g* p/ y% j( ^. h1 w( ]21.1 动态TLS
  j4 K, d3 h/ F/ S21.2 静态TLS05 Z; C' t' `3 d, O; W4 v* i

6 \5 w6 x8 |2 R9 _  X5 J/ \# w& S2 a第22章 DLL注入和API拦截8 E7 `: Z# ?1 V5 V; Q4 s& z1 j
. A% v  f7 R+ v& u. e; {: C
22.1 DLL注入的一个例子
8 k3 Q+ v3 w% w7 H: s* T, F. c9 ]22.2 使用注册表来注入DLL2 f- q% p4 n' J; {$ p
22.3 使用Windows挂钩来注入DLL- q7 @& n$ e1 [& a
22.4 使用远程线程来注入DLL2 h* F* K5 k' T5 w3 f5 O2 T
22.4.1 Inject Library示例程序
% O; e0 |" |! [22.4.2 Image Walk DLL
$ k! v* t3 c  Y5 S22.5 使用木马DLL来注入DLL) j% \+ H( k, O4 E' n
22.6 把DLL作为调试器来注入( Z7 j6 r' K  {/ w0 v
22.7 使用Create Process来注入代码5 f+ ~/ t. c. n. g* O  P
22.8 API拦截的一个例子9
& o$ V; ]: p" R; E22.8.1 通过覆盖代码来拦截API03 c* f" M( L1 k3 m
22.8.2 通过修改模块的导入段来拦截API
# u( m( l  p' d) O5 a8 k22.8.3 Last Message Box Info示例程序
% T; n1 i# Y: k$ C
7 ?0 f. ?4 j. \+ K% u3 V第Ⅴ部分 结构化异常处理
8 ]: v$ h2 V* I# M2 J( h- h' j* R# z5 D  f$ H
第23章 终止处理程序, {8 O8 x; o+ z8 w/ M" f) n" @2 j
$ A9 Z( n- k& ^7 ^4 ~
第24章 异常处理程序与软件异常
( a, w4 D& @9 v4 ~  n! N2 G
. U( [) X, x% s/ M: H24.1 通过实例理解异常过滤程序和异常处理程序4 l" s6 g  j5 X- r7 W6 _5 a" n
24.1.1 Funcmeister1函数( d% h( X3 l7 B9 K4 X  i
24.1.2 Funcmeister2函数( ?% L& y# }% Z- u9 x2 K
24.2 EXCEPTION_EXECUTE_HANDLER13 u5 V! U) d6 a% I
24.2.1 一些有用的例子4 m# X6 ]! F5 b! y, q- ~1 `
24.2.2 全局展开8 a( y& m( S  ]
24.2.3 停止全局展开3 R. j, |! g4 F! g7 `5 t& P+ C
24.3 EXCEPTION_CONTINUE_EXECUTION
6 f  |8 K0 _& n" _24.4 EXCEPTION_CONTINUE_SEARCH07 w, @0 W  _$ M, L! E
24.5 GetExceptionCode2
1 P# y5 v2 ~: V24.6 GetExceptionInformation6
  p% W9 Z# l# I; d24.7 软件异常
  ]! i3 a' n" J
% i( h& W5 Q( D) t+ u第25章 未处理异常、向量化异常处理与C++异常; {0 g! X6 p1 b# \4 z

* O, p) M% ?9 f. E0 @' _25.1 Unhandled Exception Filter函数详解
' q9 B+ r$ i) \$ ?* u25.2 即时调试
$ q0 e& B- `( r- K25.3 电子表格示例程序/ k  ^3 \. z0 d: Q% ~
25.4 向量化异常和继续处理程序% |9 v( a0 {/ k( ^& F) c' ]
25.5 C++异常与结构化异常的比较% `# T; u$ r& W  ~$ P
25.6 异常与调试器
9 D+ v0 ?. ?3 H" `. e4 J* d- f4 Z. ]- [7 R
第26章 错误报告与应用程序恢复9 y8 Q, u! `6 h; \
$ K7 k- J5 F) H1 \0 R. a
26.1 Windows错误报告控制台
2 K7 V, h$ S! N1 i' q- Y$ e26.2 可编程的Windows错误报告
, {0 k5 v$ B3 i1 M26.3 对进程中所有的问题报告进行定制
# Q) b: q5 k5 l  G: B/ e0 @) G26.4 问题报告的创建与定制
: @. a% D+ i. y3 n6 [2 b! y5 [26.4.1 创建一个自定义的问题报告! ]8 q4 y0 a; J, H
26.4.2 设置报告参数:Wer Report Set Parameter
& M3 ]" D0 O" ?8 N+ d. |26.4.3 将小型转储文件放入报告:Wer Report Add Dump 80 H; b# O1 C/ l; K4 \! ~. p
26.4.4 将任意文件放入报告:Wer Report AddFile 93 z2 C0 r; Q' S7 ]0 G% i
26.4.5 修改对话框文本:Wer Report Set UI Option 8 d. F7 k  s0 L# C0 J3 x
26.4.6 提交错误报告:Wer Report Submit . I* i# a% e0 S" D$ t4 h$ v6 I
26.4.7 关闭问题报告:Wer Report Close Handle, ^& q" @* L0 ~, u) u
26.4.8 Customized WER示例程序1 \$ n$ I" B: I' Q( D
26.5 应用程序的自动重启与恢复- @' k" ]+ g4 \. k; ?) e" a
26.5.1 应用程序的自动重启/ f! e5 Q7 n- }, z, @/ b) K
26.5.2 对应用程序恢复的支持
' c$ K3 q% O) c: N; z! g6 i# s' i2 F9 e& `+ X. k+ u2 V# q% g1 f
第Ⅵ部分
% b! E& x* ?- l: r6 M. P7 I6 \, P# `( a+ K) Q0 V; D3 A. R
附录A 构建环境
) d' F( v% A' I6 o- `
  Z- j$ A* d8 j; k3 \/ B7 z+ `) A附录B 消息处理宏、子控件宏和API宏4 y" T. k4 Z+ o+ v

/ y6 G- h* u" G6 ]索引5 W$ {5 }& }) ]
) m5 C, U" B5 P; T
楼层
跳转到指定楼层

发表回复

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

本版积分规则

关闭

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

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

小黑屋|手机版|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-4-21 21:48

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