Jump to content

CONTEXTRECORD

From EDM2
Revision as of 05:44, 30 October 2011 by Martini (talk | contribs)

CONTEXTRECORD

Machine specific register contents for the thread at the time of the exception.

Type

ULONG ContextFlags
ULONG ctx_env[7]
FPREG ctx_stack[8]
ULONG ctx_SegGs
ULONG ctx_SegFs
ULONG ctx_SegEs
ULONG ctx_SegDs
ULONG ctx_RegEdi
ULONG ctx_RegEsi
ULONG ctx_RegEax
ULONG ctx_RegEbx
ULONG ctx_RegEcx
ULONG ctx_RegEdx
ULONG ctx_RegEbp
ULONG ctx_RegEip
ULONG ctx_SegCs
ULONG ctx_EFlags
ULONG ctx_RegEsp
ULONG ctx_SegSs

C Declaration Method

typedef struct

Fields

ContextFlags Flags which control the contents of the context record. 
             Possible values are shown in the following list: 
             * CONTEXT_CONTROL SS:ESP, CS:EIP, EFLAGS and EBP 
             * CONTEXT_INTEGER EAX, EBX, ECX, EDX, ESI and EDI 
             * CONTEXT_SEGMENTS DS, ES, FS, and GS 
             * CONTEXT_FLOATING_POINT numeric coprocessor state
             * CONTEXT_FULL all the above.
              
             If the context record is used as an input parameter, then for each      
             portion of the context record controlled by a flag whose value is
             set, it is assumed that the portion of the context record contains
             valid context. If the context record is being used to modify a
             thread's context, then only that portion of the thread's context
             will be modified. 
             If the context record is used as an input/output parameter to
             capture the context of a thread, then only those portions of the
             thread's context corresponding to set flags will be returned.
ctx_env[7]   This parameter is used only when ContextFlags is set to
             CONTEXT_FLOATING_POINT.
ctx_stack[8] This parameter is used only when ContextFlags is set to 
             CONTEXT_FLOATING_POINT. 
 
ctx_SegGs    GS register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_SEGMENTS.
ctx_SegFs    FS register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_SEGMENTS.
ctx_SegEs    ES register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_SEGMENTS.
ctx_SegDs    DS register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_SEGMENTS. 
 
ctx_RegEdi   EDI register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_INTEGER.
ctx_RegEsi   ESI register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_INTEGER.
ctx_RegEax   EAX register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_INTEGER.
ctx_RegEbx   EBX register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_INTEGER.
  
ctx_RegEcx   ECX register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_INTEGER. 
 
ctx_RegEdx   EDX register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_INTEGER.
ctx_RegEbp   EBP register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_CONTROL.
ctx_RegEip   EIP register.
             This parameter is used only when ContextFlags is set to
             CONTEXT_CONTROL. 
 
ctx_SegCs    CS register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_CONTROL.
ctx_EFlags   EFLAGS register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_CONTROL.
ctx_RegEsp   ESP register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_CONTROL.
ctx_SegSs    SS register.
             This parameter is used only when ContextFlags is set to 
             CONTEXT_CONTROL.

Comment

Note that only the register sets specified by ContextFlags contain valid data. Conversely, only registers specified in ContextFlags will be restored if an exception is handled.