public void test() { VIRTUALDATA vd = new VIRTUALDATA(); vd.pageAllocated = new byte[NUMBARS, NUMPAGES]; vd.szExeName = new string[NUMBARS]; GetVirtualMemoryStatus(ref vd); }
public void test() { VIRTUALDATA vd = new VIRTUALDATA(); vd.pageAllocated = new byte[NUMBARS, NUMPAGES]; vd.szExeName = new string[NUMBARS]; GetVirtualMemoryStatus(ref vd); }
void GetVirtualMemoryStatus(ref VIRTUALDATA pvd) { MEMORY_BASIC_INFORMATION mbi; int idx; DWORD addr; BYTE state; int STARTBAR = 0; //memset(pvd->pageAllocated,0x00,sizeof(pvd->pageAllocated)); for (idx = STARTBAR; idx < STARTBAR + NUMBARS; idx++) { DWORD offset; addr = idx * 0x02000000; for (offset = 0; offset < 0x02000000; offset += mbi.RegionSize.ToInt32()) { Int32 i; //memset(&mbi,0x00,sizeof(MEMORY_BASIC_INFORMATION)); uint newAddr = (uint)(addr + offset); mbi = new MEMORY_BASIC_INFORMATION(); if (VirtualQuery(ref newAddr, ref mbi, Marshal.SizeOf(typeof(MEMORY_BASIC_INFORMATION))) == 0) { break; } state = (BYTE)((mbi.State >> 12) & (VMEMCOMMIT | VMEMRESERVE)); if (state > 0) { for (i = (offset) / 4096; i < (offset + mbi.RegionSize.ToInt32()) / 4096; i++) { pvd.pageAllocated[idx - STARTBAR, i] = state; } } } } }
void GetVirtualMemoryStatus(ref VIRTUALDATA pvd) { MEMORY_BASIC_INFORMATION mbi; int idx; DWORD addr; BYTE state; int STARTBAR=0; //memset(pvd->pageAllocated,0x00,sizeof(pvd->pageAllocated)); for(idx=STARTBAR;idx<STARTBAR+NUMBARS;idx++) { DWORD offset; addr = idx * 0x02000000; for( offset = 0; offset < 0x02000000; offset += mbi.RegionSize.ToInt32() ) { Int32 i; //memset(&mbi,0x00,sizeof(MEMORY_BASIC_INFORMATION)); uint newAddr = (uint)(addr + offset); mbi = new MEMORY_BASIC_INFORMATION(); if(VirtualQuery( ref newAddr, ref mbi, Marshal.SizeOf(typeof( MEMORY_BASIC_INFORMATION )) )==0) break; state=(BYTE)((mbi.State>>12)&(VMEMCOMMIT|VMEMRESERVE)); if(state>0) { for(i=(offset)/4096;i< (offset+mbi.RegionSize.ToInt32())/4096;i++) pvd.pageAllocated[idx-STARTBAR,i]=state; } } } }