No sé exactamente qué quieres ni tengo mucha práctica con C++ pero te dejo una base mas limpia para que puedas continuar haciendo pruebas. (Basandome en el código de C++)
Código Delphi
[-]
uses
System.SysUtils,
messages,
Winapi.Windows;
var
Sysinfo: _SYSTEM_INFO;
min_addr, max_addr: DWORD;
i:Cardinal;
MBI:MEMORY_BASIC_INFORMATION;
const
MemorySectionName = $2;
MemoryBasicVlmInformation = $3;
LHND = $0042;
LMEM_FIXED = $0000;
LMEM_MOVEABLE = $0002;
LMEM_ZEROINIT = $0040;
LPTR = $0040;
NONZEROLHND = $0002;
NONZEROLPTR = $0000;
begin
GetSystemInfo(Sysinfo);
min_addr := DWORD(Sysinfo.lpMinimumApplicationAddress);
max_addr := DWORD(Sysinfo.lpMaximumApplicationAddress);
LocalAlloc(LMEM_ZEROINIT, $1000);
for i := min_addr to max_addr + Sysinfo.dwPageSize do
begin
if VirtualQuery(Pointer(DWORD(i)),MBI,SizeOf(MBI)) = 0 then
if MBI.Type_9 = mem_image then
end;
end.