From 7e20cc18d921e5e04b9678c9c350da62228722af Mon Sep 17 00:00:00 2001 From: xerox Date: Fri, 8 May 2020 07:46:41 +0000 Subject: [PATCH] Update physmeme.hpp --- demo/supermicro/physmeme.hpp | 43 ++++-------------------------------- 1 file changed, 4 insertions(+), 39 deletions(-) diff --git a/demo/supermicro/physmeme.hpp b/demo/supermicro/physmeme.hpp index 31f284a..4f03cad 100644 --- a/demo/supermicro/physmeme.hpp +++ b/demo/supermicro/physmeme.hpp @@ -6,45 +6,10 @@ namespace physmeme { - //--- ranges of physical memory - static std::map pmem_ranges; - - //--- validates the address - static bool is_valid(std::uintptr_t addr) - { - for (auto range : pmem_ranges) - if (addr >= range.first && addr <= range.first + range.second) - return true; - return false; - } - - // Author: Remy Lebeau - // taken from here: https://stackoverflow.com/questions/48485364/read-reg-resource-list-memory-values-incorrect-value - static const auto init_ranges = ([&]() -> bool - { - HKEY h_key; - DWORD type, size; - LPBYTE data; - RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\RESOURCEMAP\\System Resources\\Physical Memory", 0, KEY_READ, &h_key); - RegQueryValueEx(h_key, ".Translated", NULL, &type, NULL, &size); //get size - data = new BYTE[size]; - RegQueryValueEx(h_key, ".Translated", NULL, &type, data, &size); - DWORD count = *(DWORD*)(data + 16); - auto pmi = data + 24; - for (int dwIndex = 0; dwIndex < count; dwIndex++) - { - pmem_ranges.emplace(*(uint64_t*)(pmi + 0), *(uint64_t*)(pmi + 8)); - pmi += 20; - } - delete[] data; - RegCloseKey(h_key); - return true; - })(); - /* please code this function depending on your method of physical read/write. */ - static std::uintptr_t map_phys( + inline std::uintptr_t map_phys( std::uintptr_t addr, std::size_t size ) @@ -62,7 +27,7 @@ namespace physmeme /* please code this function depending on your method of physical read/write. */ - static bool unmap_phys( + inline bool unmap_phys( std::uintptr_t addr, std::size_t size ) @@ -76,7 +41,7 @@ namespace physmeme /* please code this function depending on your method of physical read/write. */ - static HANDLE load_drv() + inline HANDLE load_drv() { static const auto load_driver_ptr = reinterpret_cast<__int64(*)()>( @@ -92,7 +57,7 @@ namespace physmeme /* please code this function depending on your method of physical read/write. */ - static bool unload_drv() + inline bool unload_drv() { static const auto unload_driver_ptr = reinterpret_cast<__int64(*)()>(