CONTEXTRECORD: Difference between revisions
Appearance
No edit summary |
m Ak120 moved page OS2 API:DataType:CONTEXTRECORD to CONTEXTRECORD |
(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:
- 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.