diff --git a/ntoskrnl/kd/i386/kdmemsup.c b/ntoskrnl/kd/i386/kdmemsup.c index 3f14bcdc9c3..7616734ce53 100644 --- a/ntoskrnl/kd/i386/kdmemsup.c +++ b/ntoskrnl/kd/i386/kdmemsup.c @@ -118,7 +118,7 @@ KdpTranslateAddress(ULONG_PTR Addr, PULONG_PTR ResultAddr) { ULONG_PTR CR3Value = __readcr3(); ULONG_PTR CR4Value = __readcr4(); - ULONG_PTR PageDirectory = (CR3Value & ~(PAGE_SIZE-1)) + + ULONG_PTR PageDirectory = (CR3Value & ~(PAGE_SIZE-1)) + ((Addr >> 22) * sizeof(ULONG)); ULONG_PTR PageDirectoryEntry = KdpPhysRead(PageDirectory, sizeof(ULONG)); @@ -137,7 +137,7 @@ KdpTranslateAddress(ULONG_PTR Addr, PULONG_PTR ResultAddr) } else { - ULONG_PTR PageTableAddr = + ULONG_PTR PageTableAddr = (PageDirectoryEntry & ~(PAGE_SIZE-1)) + ((Addr >> PAGE_SHIFT) & PAGE_TABLE_MASK) * sizeof(ULONG); ULONG_PTR PageTableEntry = KdpPhysRead(PageTableAddr, sizeof(ULONG)); @@ -165,7 +165,7 @@ KdpSafeReadMemory(ULONG_PTR Addr, LONG Len, PVOID Value) } memset(Value, 0, Len); - + if (!KdpTranslateAddress(Addr, &ResultPhysAddr)) return FALSE; @@ -199,7 +199,7 @@ KdpSafeWriteMemory(ULONG_PTR Addr, LONG Len, ULONGLONG Value) memcpy((PVOID)Addr, &Value, Len); return TRUE; } - + if (!KdpTranslateAddress(Addr, &ResultPhysAddr)) return FALSE; diff --git a/ntoskrnl/kd64/kdapi.c b/ntoskrnl/kd64/kdapi.c index 9256225f94c..bfb7283ee1a 100644 --- a/ntoskrnl/kd64/kdapi.c +++ b/ntoskrnl/kd64/kdapi.c @@ -529,7 +529,7 @@ KdpWriteVirtualMemory(IN PDBGKD_MANIPULATE_STATE64 State, VOID NTAPI -KdpReadPhysicalmemory(IN PDBGKD_MANIPULATE_STATE64 State, +KdpReadPhysicalMemory(IN PDBGKD_MANIPULATE_STATE64 State, IN PSTRING Data, IN PCONTEXT Context) { @@ -592,7 +592,7 @@ KdpReadPhysicalmemory(IN PDBGKD_MANIPULATE_STATE64 State, VOID NTAPI -KdpWritePhysicalmemory(IN PDBGKD_MANIPULATE_STATE64 State, +KdpWritePhysicalMemory(IN PDBGKD_MANIPULATE_STATE64 State, IN PSTRING Data, IN PCONTEXT Context) { @@ -1395,13 +1395,13 @@ SendPacket: case DbgKdReadPhysicalMemoryApi: /* Read physical memory */ - KdpReadPhysicalmemory(&ManipulateState, &Data, Context); + KdpReadPhysicalMemory(&ManipulateState, &Data, Context); break; case DbgKdWritePhysicalMemoryApi: /* Write physical memory */ - KdpWritePhysicalmemory(&ManipulateState, &Data, Context); + KdpWritePhysicalMemory(&ManipulateState, &Data, Context); break; case DbgKdQuerySpecialCallsApi: