CONTEXT结构

本文详细介绍了CONTEXT结构的内容,包括CPU的控制寄存器、整数寄存器、浮点寄存器、段寄存器、调试寄存器及扩展寄存器等,并提供了具体的结构定义及其在SEH中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CONTEXT结构包括以下部分:

 CONTEXT_CONTROL:包含CPU的控制寄存器,比如指今指针,堆栈指针,标志和函数返回地址..AX, BX, CX, DX, SI, D
  CONTEXT_INTEGER:用于标识CPU的整数寄存器.DS, ES, FS, GS
  CONTEXT_FLOATING_POINT:用于标识CPU的浮点寄存器.
  CONTEXT_SEGMENTS:用于标识CPU的段寄存器.SS:SP, CS:IP, FLAGS, BP
  CONTEXT_DEBUG_REGISTER:用于标识CPU的调试寄存器.  
 CONTEXT_EXTENDED_REGISTERS:用于标识CPU的扩展寄存器I
  CONTEXT_FULL:相当于CONTEXT_CONTROL or CONTEXT_INTEGER or   CONTEXT_SEGMENTS,即这三个标志的组合

typedef struct _CONTEXT { 
DWORD ContextFlags; 
DWORD Dr0; 
DWORD Dr1;
DWORD Dr2;
DWORD Dr3; 
DWORD Dr6; 
DWORD Dr7; 
FLOATING_SAVE_AREA FloatSave; 
DWORD SegGs; 
DWORD SegFs; 
DWORD SegEs; 
DWORD SegDs; 
DWORD Edi; 
DWORD Esi; 
DWORD Ebx; 
DWORD Edx; 
DWORD Ecx; 
DWORD Eax; 
DWORD Ebp; 
DWORD Eip; 
DWORD SegCs; 
DWORD EFlags; 
DWORD Esp; 
DWORD SegSs; 
} CONTEXT;


当用于 SEH 时,CONTEXT 结构体保存着发生异常时各寄存器的值。

对照CONTEXT结构:
+0x08c SegGs
+0x090 SegFs
+0x094 SegEs
+0x098 SegDs
+0x09c Edi
+0x0a0 Esi
+0x0a4 Ebx
+0x0a8 Edx
+0x0ac Ecx
+0x0b0 Eax
+0x0b4 Ebp
+0x0b8 Eip
+0x0bc SegCs
+0x0c0 EFlags
+0x0c4 Esp
+0x0c8 SegSs






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值