20 #define VE_VMCALL_OP 0x22 21 #define VE_VMCALL_SUBOP 0x18 31 #define VE_HCALL_NOP 0 40 #define VE_HCALL_BREAK 1 49 #define VE_HCALL_TRACE 2 56 #define VE_HCALL_RAISE_EPT 3 132 QWORD VeIgnoredCache;
134 QWORD VeIgnoredIrrelevant;
154 #define VE_STACK_SIZE 0x4000 157 #define VE_MAX_CPUS 64 189 #define VE_CACHE_LINES 64 190 #define VE_CACHE_BUCKETS 64 192 #define VE_CACHE_ENTRIES 8 195 #define VE_CACHE_GET_LINE(x) (((x) >> 12) & (VE_CACHE_LINES - 1)) 196 #define VE_CACHE_GET_BUCKET(x) (((x) >> 3) & (VE_CACHE_BUCKETS - 1)) 212 #define VE_STATUS_SUCCESS 0x00000000 213 #define VE_STATUS_ERROR 0x80000000 214 #define VE_STATUS_NOT_SUPPORTED 0x80000001 215 #define VE_STATUS_DISASM_ERROR 0x80000002 216 #define VE_STATUS_PAGE_NOT_PRESENT 0x80000003 217 #define VE_STATUS_ACCESS_DENIED 0x80000004 219 #define VE_SUCCESS(s) ((s) < VE_STATUS_ERROR) 221 #define VE_BREAK_UNKNOWN_EXIT 0x00000001 222 #define VE_BREAK_PAGE_WALK_FAILED 0x00000002 223 #define VE_BREAK_EMULATION_FAILED 0x00000003 224 #define VE_BREAK_CS_NOT_KERNEL 0x00000004 227 #endif // _VECOMMON_H_ QWORD Reserved2
Reserved by Intel.
QWORD VeMm
Number of VEs generated by the OS.
#define VE_CACHE_BUCKETS
64 buckets/line, indexed by bits [3, 8] inside the page-table entry address.
QWORD OldValue
Old page-table entry.
QWORD GuestPhysicalAddress
Same as the GPA field provided on EPT Violations.
QWORD TscTotal
Total number of CPU ticks spent inside the agent.
struct _VE_STACK VE_STACK
struct _REGISTERS * PREGISTERS
struct _VE_STACK * PVE_STACK
#define VE_STACK_SIZE
Total size of the stack used by the VE agent.
#define VE_CACHE_ENTRIES
8 entries/bucket.
QWORD NewValue
New page-table entry.
REGISTERS Registers
Offset 0x30 - 0x200, general purpose registers.
QWORD VeTotal
Total number of VEs.
PBYTE ProtectedStack
Offset 0x200, the protected stack.
QWORD TscCount
Total number of times the agent has been invoked.
QWORD EptpIndex
The index of the EPT in which the fault took place.
union _VECPU_PAGE * PVECPU_PAGE
union _VECPU_PAGE VECPU_PAGE
QWORD GuestLinearAddress
Same as the GLA field provided on EPT Violations.
QWORD Self
Pointer to self.
BOOLEAN Raised
True if the current VE has been sent to Introcore via VMCALL.
VECPU Cpu
The VE info page.
struct _VE_CACHE_LINE VE_CACHE_LINE
PBYTE OriginalStack
Offset 0x208, the original stack.
QWORD VePageWalk
Number of VEs generated by the CPU page-walker.
VE_CACHE_LINE * Page
Mapped page inside Introspection virtual address space.
struct _REGISTERS REGISTERS
DWORD Reason
Same as the basic VM Exit reason.