Что сильно медленно работает?
Я делал так
MEMORY_BASIC_INFORMATION MBI;
DWORD dwNumByte;
SYSTEM_INFO sInfo;
GetSystemInfo(&sInfo);
PVOID pvAddress =sInfo.lpMinimumApplicationAddress;
while( pvAddress < sInfo.lpMaximumApplicationAddress)
{
dwNumByte = VirtualQueryEx(hProcess,pvAddress,&MBI,sizeof(MBI) );
if(dwNumByte != sizeof(MBI) )
{
//Error
}
pvAddress = (PVOID) ( (DWORD)MBI.BaseAddress + MBI.RegionSize);
if( MEM_COMMIT != MBI.State ) continue;
DWORD dwNumberOfBytesRead;
void* pdwBuf = 0;
pdwBuf= new BYTE[MBI.RegionSize];
if(!pdwBuf)
{
// error at alloc memory
}
BOOL b=FALSE;
b= ReadProcessMemory(
hProcess, // handle to the process whose memory is read
MBI.BaseAddress, // address to start reading
pdwBuf,// address of buffer to place read data
MBI.RegionSize,//iCount, // number of bytes to read
&dwNumberOfBytesRead // address of number of bytes read
);