diff --git a/reactos/ntoskrnl/mm/ARM3/procsup.c b/reactos/ntoskrnl/mm/ARM3/procsup.c index 6356f933fa0..a9928dcf6cf 100644 --- a/reactos/ntoskrnl/mm/ARM3/procsup.c +++ b/reactos/ntoskrnl/mm/ARM3/procsup.c @@ -24,7 +24,7 @@ PMMWSL MmWorkingSetList; VOID NTAPI -MiRosTakeOverPebTebRanges(IN PEPROCESS Process) +MiRosTakeOverSharedUserPage(IN PEPROCESS Process) { NTSTATUS Status; PMEMORY_AREA MemoryArea; @@ -35,8 +35,7 @@ MiRosTakeOverPebTebRanges(IN PEPROCESS Process) Status = MmCreateMemoryArea(&Process->Vm, MEMORY_AREA_OWNED_BY_ARM3, &AllocatedBase, - ((ULONG_PTR)MM_HIGHEST_USER_ADDRESS - 1) - - (ULONG_PTR)USER_SHARED_DATA, + PAGE_SIZE, PAGE_READWRITE, &MemoryArea, TRUE, @@ -1002,7 +1001,7 @@ MmInitializeProcessAddressSpace(IN PEPROCESS Process, KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql); /* Lock the VAD, ARM3-owned ranges away */ - MiRosTakeOverPebTebRanges(Process); + MiRosTakeOverSharedUserPage(Process); /* Check if there's a Section Object */ if (SectionObject) @@ -1102,7 +1101,7 @@ INIT_FUNCTION MmInitializeHandBuiltProcess2(IN PEPROCESS Process) { /* Lock the VAD, ARM3-owned ranges away */ - MiRosTakeOverPebTebRanges(Process); + MiRosTakeOverSharedUserPage(Process); return STATUS_SUCCESS; } diff --git a/reactos/ntoskrnl/mm/amd64/page.c b/reactos/ntoskrnl/mm/amd64/page.c index 485919bffac..ea245533f06 100644 --- a/reactos/ntoskrnl/mm/amd64/page.c +++ b/reactos/ntoskrnl/mm/amd64/page.c @@ -336,6 +336,44 @@ MmIsPageSwapEntry(PEPROCESS Process, PVOID Address) return Pte.u.Hard.Valid && Pte.u.Soft.Transition; } +static PMMPTE +MmGetPageTableForProcess(PEPROCESS Process, PVOID Address, BOOLEAN Create) +{ + __debugbreak(); + return 0; +} + +BOOLEAN MmUnmapPageTable(PMMPTE Pt) +{ + ASSERT(FALSE); + return 0; +} + +static ULONG64 MmGetPageEntryForProcess(PEPROCESS Process, PVOID Address) +{ + MMPTE Pte, *PointerPte; + + PointerPte = MmGetPageTableForProcess(Process, Address, FALSE); + if (PointerPte) + { + Pte = *PointerPte; + MmUnmapPageTable(PointerPte); + return Pte.u.Long; + } + return 0; +} + +VOID +NTAPI +MmGetPageFileMapping( + PEPROCESS Process, + PVOID Address, + SWAPENTRY* SwapEntry) +{ + ULONG64 Entry = MmGetPageEntryForProcess(Process, Address); + *SwapEntry = Entry >> 1; +} + BOOLEAN NTAPI MmIsDirtyPage(PEPROCESS Process, PVOID Address)