Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ionescu007/SimpleVisor.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/shv.h
diff options
context:
space:
mode:
Diffstat (limited to 'shv.h')
-rw-r--r--shv.h59
1 files changed, 50 insertions, 9 deletions
diff --git a/shv.h b/shv.h
index 7331a0c..e78e557 100644
--- a/shv.h
+++ b/shv.h
@@ -79,10 +79,24 @@ typedef struct _SHV_VP_STATE
ULONG_PTR GuestRsp;
ULONG_PTR GuestEFlags;
USHORT ExitReason;
- KIRQL GuestIrql;
BOOLEAN ExitVm;
} SHV_VP_STATE, *PSHV_VP_STATE;
+typedef struct _SHV_CALLBACK_CONTEXT
+{
+ ULONG64 Cr3;
+ volatile ULONG InitCount;
+ LONG FailedCpu;
+ NTSTATUS FailureStatus;
+} SHV_CALLBACK_CONTEXT, *PSHV_CALLBACK_CONTEXT;
+
+typedef
+VOID
+SHV_CPU_CALLBACK (
+ _In_ PSHV_CALLBACK_CONTEXT Context
+ );
+typedef SHV_CPU_CALLBACK *PSHV_CPU_CALLBACK;
+
VOID
ShvVmxEntry (
VOID
@@ -142,21 +156,48 @@ ShvVmxEptInitialize (
_In_ PSHV_VP_DATA VpData
);
+NTSTATUS
+ShvLoad (
+ VOID
+ );
+
+VOID
+ShvUnload (
+ VOID
+ );
+
+DECLSPEC_NORETURN
+VOID
+__cdecl
+ShvOsRestoreContext (
+ _In_ PCONTEXT ContextRecord
+ );
+
+VOID
+ShvOsFreeContiguousAlignedMemory (
+ _In_ PVOID BaseAddress
+ );
+
+PVOID
+ShvOsAllocateContigousAlignedMemory (
+ _In_ SIZE_T Size
+ );
+
DECLSPEC_NORETURN
VOID
ShvVpRestoreAfterLaunch (
VOID
);
-typedef struct _SHV_DPC_CONTEXT
-{
- ULONG64 Cr3;
- volatile ULONG InitCount;
- LONG FailedCpu;
- NTSTATUS FailureStatus;
-} SHV_DPC_CONTEXT, *PSHV_DPC_CONTEXT;
+VOID
+ShvOsRunCallbackOnProcessors (
+ _In_ PSHV_CPU_CALLBACK Routine,
+ _In_opt_ PVOID Context
+ );
-KDEFERRED_ROUTINE ShvVpCallbackDpc;
+SHV_CPU_CALLBACK ShvVpLoadCallback;
+SHV_CPU_CALLBACK ShvVpUnloadCallback;
extern PSHV_VP_DATA* ShvGlobalData;
+#define ShvOsDebugPrint(format, ...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, format, __VA_ARGS__)