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.