Jump to content

CONTEXTRECORD: Difference between revisions

From EDM2
Ak120 (talk | contribs)
No edit summary
Ak120 (talk | contribs)
(No difference)

Revision as of 12:16, 31 October 2016

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:
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.