14 _In_ void *GuestHandle,
25 _In_ void *GuestHandle,
36 _In_ void *GuestHandle,
46 _In_ void *GuestHandle,
54 _In_ void *GuestHandle,
61 _In_ void *GuestHandle
66 _In_ void *GuestHandle,
73 _In_ void *GuestHandle,
95 TRACE(
"[CALLBACK] Register the EPT callback...\n");
100 ERROR(
"[ERROR] IntRegisterEPTHandler failed: 0x%08x\n", status);
112 TRACE(
"[CALLBACK] Unregister the EPT callback...\n");
117 ERROR(
"[ERROR] IntUnregisterEPTHandler failed: 0x%08x\n", status);
129 TRACE(
"[CALLBACK] Register the DTR callback...\n");
134 ERROR(
"[ERROR] IntRegisterDtrHandler failed: 0x%08x\n", status);
146 TRACE(
"[CALLBACK] Unregister the DTR callback...\n");
151 ERROR(
"[ERROR] IntUnregisterDtrHandler failed: 0x%08x\n", status);
163 TRACE(
"[CALLBACK] Register the MSR callback...\n");
168 ERROR(
"[ERROR] IntRegisterMSRHandler failed: 0x%08x\n", status);
180 TRACE(
"[CALLBACK] Unregister the MSR callback...\n");
185 ERROR(
"[ERROR] IntUnregisterMSRHandler failed: 0x%08x\n", status);
197 TRACE(
"[CALLBACK] Register the CR callback...\n");
202 ERROR(
"[ERROR] IntRegisterCrWriteHandler failed: 0x%08x\n", status);
214 TRACE(
"[CALLBACK] Unregister the CR callback...\n");
219 ERROR(
"[ERROR] IntUnregisterCrWriteHandler failed: 0x%08x\n", status);
231 TRACE(
"[CALLBACK] Register the XCR callback...\n");
236 ERROR(
"[ERROR] IntRegisterXcrWriteHandler failed: 0x%08x\n", status);
248 TRACE(
"[CALLBACK] Unregister the XCR callback...\n");
253 ERROR(
"[ERROR] IntUnregisterXcrHandler failed: 0x%08x\n", status);
265 TRACE(
"[CALLBACK] Register the INT3 callback...\n");
270 ERROR(
"[ERROR] IntRegisterBreakpointHandler failed: 0x%08x\n", status);
282 TRACE(
"[CALLBACK] Unregister the INT3 callback...\n");
287 ERROR(
"[ERROR] IntUnregisterBreakpointHandler failed: 0x%08x\n", status);
294 #endif // _CALLBACKS_H_
INTSTATUS IntRegisterDtrHandler(PFUNC_IntIntroDescriptorTableCallback Callback)
static INTSTATUS IntDisableCrNotifications(void)
INTSTATUS IntHandleXcrWrite(void *GuestHandle, DWORD CpuNumber, INTRO_ACTION *Action)
Handle extended control registers writes.
#define INT_SUCCESS(Status)
int INTSTATUS
The status data type.
INTSTATUS IntUnregisterEPTHandler(void)
INTSTATUS IntCallbacksUnInit(void)
Uninit all the Introcore callbacks.
INTSTATUS IntUnregisterDtrHandler(void)
INTSTATUS IntUnregisterXcrWriteHandler(void)
INTSTATUS IntRegisterCrWriteHandler(PFUNC_IntCrWriteCallback Callback)
static INTSTATUS IntEnableEptNotifications(void)
static INTSTATUS IntDisableEptNotifications(void)
static INTSTATUS IntEnableCrNotifications(void)
static INTSTATUS IntEnableMsrNotifications(void)
static INTSTATUS IntDisableXcrNotifications(void)
INTSTATUS IntRegisterMSRHandler(PFUNC_IntMSRViolationCallback Callback)
static INTSTATUS IntDisableDtrNotifications(void)
INTSTATUS IntHandleTimer(void *GuestHandle)
Periodically called by the integrator, once every second.
IG_MSR_HOOK_TYPE
The type of the MSR access.
INTSTATUS IntHandleCrWrite(void *GuestHandle, DWORD Cr, DWORD CpuNumber, QWORD OldValue, QWORD NewValue, INTRO_ACTION *Action)
Handle a control register violation.
enum _INTRO_ACTION INTRO_ACTION
Event actions.
INTSTATUS IntUnregisterMSRHandler(void)
INTSTATUS IntRegisterBreakpointHandler(PFUNC_IntBreakpointCallback Callback)
static INTSTATUS IntEnableBreakpointNotifications(void)
static INTSTATUS IntDisableBreakpointNotifications(void)
INTSTATUS IntUnregisterCrWriteHandler(void)
static INTSTATUS IntEnableXcrNotifications(void)
static INTSTATUS IntEnableDtrNotifications(void)
INTSTATUS IntRegisterEPTHandler(PFUNC_IntEPTViolationCallback Callback)
INTSTATUS IntHandleMsrViolation(void *GuestHandle, DWORD Msr, IG_MSR_HOOK_TYPE Flags, INTRO_ACTION *Action, QWORD OriginalValue, QWORD *NewValue, DWORD CpuNumber)
Handle a model specific register violation.
INTSTATUS IntCallbacksInit(void)
Initialize the callbacks.
INTSTATUS IntRegisterXcrWriteHandler(PFUNC_IntXcrWriteCallback Callback)
INTSTATUS IntHandleIntroCall(void *GuestHandle, QWORD Rip, DWORD CpuNumber)
Handle a VMCALL issued inside the guest.
INTSTATUS IntHandleDtrViolation(void *GuestHandle, DWORD Flags, DWORD CpuNumber, INTRO_ACTION *Action)
Handle GDTR, IDTR, LDTR, TR accesses.
INTSTATUS IntHandleBreakpoint(void *GuestHandle, QWORD GuestPhysicalAddress, DWORD CpuNumber)
Handle guest breakpoints.
INTSTATUS IntUnregisterBreakpointHandler(void)
INTSTATUS IntHandleEptViolation(void *GuestHandle, QWORD PhysicalAddress, DWORD Length, QWORD LinearAddress, DWORD CpuNumber, INTRO_ACTION *Action, IG_EPT_ACCESS AccessType)
Handle an EPT violation.
static INTSTATUS IntDisableMsrNotifications(void)