diff --git a/sdk/xtdk/mmtypes.h b/sdk/xtdk/mmtypes.h index efb218c..193ca8f 100644 --- a/sdk/xtdk/mmtypes.h +++ b/sdk/xtdk/mmtypes.h @@ -57,10 +57,15 @@ typedef struct _MMMEMORY_LAYOUT { PMMPFN PfnDatabaseAddress; PVOID SelfMapAddress; + PVOID HyperSpaceStart; + PVOID HyperSpaceEnd; PVOID NonPagedPoolStart; PVOID NonPagedPoolEnd; PVOID PagedPoolStart; PVOID PagedPoolEnd; + PVOID SystemSpaceStart; + PVOID SystemSpaceEnd; + PVOID UserSpaceEnd; } MMMEMORY_LAYOUT, *PMMMEMORY_LAYOUT; /* Page Frame Entry structure definition */ diff --git a/xtoskrnl/mm/mmgr.cc b/xtoskrnl/mm/mmgr.cc index 79af5a4..93ff272 100644 --- a/xtoskrnl/mm/mmgr.cc +++ b/xtoskrnl/mm/mmgr.cc @@ -57,6 +57,12 @@ MM::Manager::InitializeMemoryLayout(VOID) MemoryLayout.NonPagedPoolEnd = (PVOID)0xFFFEFFFFFFBFFFFFULL; MemoryLayout.PagedPoolStart = (PVOID)0xFFFEF8A000000000ULL; MemoryLayout.PagedPoolEnd = (PVOID)(((ULONG_PTR)MemoryLayout.PagedPoolStart + PagedPoolSize) - 1); + + MemoryLayout.HyperSpaceStart = (PVOID)0xFFFEF70000000000ULL; + MemoryLayout.HyperSpaceEnd = (PVOID)0xFFFEF77FFFFFFFFFULL; + MemoryLayout.SystemSpaceStart = (PVOID)0xFFFEF88000000000ULL; + MemoryLayout.SystemSpaceEnd = (PVOID)((ULONG_PTR)MemoryLayout.SystemSpaceStart + (MM_NUMBER_SYSTEM_PTES + 1) * MM_PAGE_SIZE); + MemoryLayout.UserSpaceEnd = (PVOID)0x07FFFFFFFFFFFFFULL; } else { @@ -67,6 +73,12 @@ MM::Manager::InitializeMemoryLayout(VOID) MemoryLayout.NonPagedPoolEnd = (PVOID)0xFFFFFFFFFFBFFFFFULL; MemoryLayout.PagedPoolStart = (PVOID)0xFFFFF8A000000000ULL; MemoryLayout.PagedPoolEnd = (PVOID)(((ULONG_PTR)MemoryLayout.PagedPoolStart + PagedPoolSize) - 1); + + MemoryLayout.HyperSpaceStart = (PVOID)0xFFFFF70000000000ULL; + MemoryLayout.HyperSpaceEnd = (PVOID)0xFFFFF77FFFFFFFFFULL; + MemoryLayout.SystemSpaceStart = (PVOID)0xFFFFF88000000000ULL; + MemoryLayout.SystemSpaceEnd = (PVOID)((ULONG_PTR)MemoryLayout.SystemSpaceStart + (MM_NUMBER_SYSTEM_PTES + 1) * MM_PAGE_SIZE); + MemoryLayout.UserSpaceEnd = (PVOID)0x000007FFFFFEFFFFULL; } }