PS_CTX
A structure holding the current CPU register context.
Syntax
typedef struct _PS_CTX
{
// Location
uint64_t rip;
// Space
uint64_t cr3;
// Stack
uint64_t rsp;
// Gpr
uint64_t rax;
uint64_t rbx;
uint64_t rcx;
uint64_t rdx;
uint64_t rsi;
uint64_t rdi;
uint64_t rbp;
uint64_t rflags;
uint64_t r8;
uint64_t r9;
uint64_t r10;
uint64_t r11;
uint64_t r12;
uint64_t r13;
uint64_t r14;
uint64_t r15;
// Segment
uint16_t cs;
uint16_t ds;
uint16_t ss;
uint16_t es;
uint16_t fs;
uint16_t gs;
uint32_t cs_access;
uint32_t ds_access;
uint32_t ss_access;
uint32_t es_access;
uint32_t fs_access;
uint32_t gs_access;
uint32_t cs_limit;
uint32_t ds_limit;
uint32_t ss_limit;
uint32_t es_limit;
uint32_t fs_limit;
uint32_t gs_limit;
uint64_t cs_base;
uint64_t ds_base;
uint64_t ss_base;
uint64_t es_base;
uint64_t fs_base;
uint64_t gs_base;
// Control
uint64_t cr0;
uint64_t cr2;
uint64_t cr4;
uint64_t cr8;
// Descriptor table
uint64_t gdt_base;
uint64_t idt_base;
uint16_t gdt_limit;
uint16_t idt_limit;
// Descriptor
uint16_t ldt;
uint16_t tss;
uint32_t ldt_access;
uint32_t ldt_limit;
uint64_t ldt_base;
uint32_t tss_access;
uint32_t tss_limit;
uint64_t tss_base;
// Debug
uint64_t dr0;
uint64_t dr1;
uint64_t dr2;
uint64_t dr3;
uint64_t dr6;
uint64_t dr7;
} PS_CTX, *PPS_CTX;
Members
Members of this structure represent the architectural x86-64 register state.