This is the machine specific register contents for the thread at the time of the exception.
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.
typedef struct _CONTEXTRECORD { ULONG ContextFlags; /* Flags which control the contents of the context record. */ ULONG ctx_env[7]; FPREG ctx_stack[8]; ULONG ctx_SegGs; /* GS register. */ ULONG ctx_SegFs; /* FS register. */ ULONG ctx_SegEs; /* ES register. */ ULONG ctx_SegDs; /* DS register. */ ULONG ctx_RegEdi; /* EDI register. */ ULONG ctx_RegEsi; /* ESI register. */ ULONG ctx_RegEax; /* EAX register. */ ULONG ctx_RegEbx; /* EBX register. */ ULONG ctx_RegEcx; /* ECX register. */ ULONG ctx_RegEdx; /* EDX register. */ ULONG ctx_RegEbp; /* EBP register. */ ULONG ctx_RegEip; /* EIP register. */ ULONG ctx_SegCs; /* CS register. */ ULONG ctx_EFlags; /* EFLAGS register. */ ULONG ctx_RegEsp; /* ESP register. */ ULONG ctx_SegSs; /* SS register. */ } CONTEXTRECORD; typedef CONTEXTRECORD * PCONTEXTRECORD ;