获取内存信息

需要用到psapi.lib 并包含psapi.h

PSAPI   Functions 

The   following   are   the   PSAPI   functions. 

EmptyWorkingSet

EnumDeviceDrivers

EnumProcesses

EnumProcessModules

GetDeviceDriverBaseName

GetDeviceDriverFileName

GetMappedFileName

GetModuleBaseName

GetModuleFileNameEx

GetModuleInformation

GetProcessMemoryInfo

GetWsChanges

InitializeProcessForWsWatch

QueryWorkingSet      

1.进程内存

BOOL GetProcessMemoryInfo(   HANDLE Process,                          // handle to process

PPROCESS_MEMORY_COUNTERS ppsmemCounters,              // buffer

DWORD cb                                                                                               // size of buffer

The GetProcessMemoryInfo function retrieves information about the memory usage of the specified process in the PROCESS_MEMORY_COUNTERS structure. 

BOOL GetProcessIoCounters(   HANDLE hProcess,           // handle to process   PIO_COUNTERS lpIoCounters  // I/O accouting information );

 ---------------------------------------------------------------

typedef struct _PROCESS_MEMORY_COUNTERS {     

DWORD cb;     

DWORD PageFaultCount;     

SIZE_T PeakWorkingSetSize;     

SIZE_T WorkingSetSize;     

SIZE_T QuotaPeakPagedPoolUsage;    

 SIZE_T QuotaPagedPoolUsage;     

SIZE_T QuotaPeakNonPagedPoolUsage;     

SIZE_T QuotaNonPagedPoolUsage;     

SIZE_T PagefileUsage;     

SIZE_T PeakPagefileUsage; } 

PROCESS_MEMORY_COUNTERS; typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS;

---------------------------------------------------------------

PPROCESS_MEMORY_COUNTERS结构里面的PagefileUsage就是虚拟内存大小

2.系统内存

CString   StrTotalMemory;

CString   StrUsedMemory;

CString   StrFreeMemory;

CString   StrInfo;

MEMORYSTATUS   MemStat;

MemStat.dwLength=sizeof(MEMORYSTATUS);

::GlobalMemoryStatus(&MemStat);

StrTotalMemory.Format("系统总内存:%ld字节,大约等于:%ld   M   Byte/n",    MemStat.dwTotalPhys,MemStat.dwTotalPhys/1024/1024);

StrFreeMemory.Format("系统可用内存:%ld字节,大约等于:%ld   M   Byte/n",    MemStat.dwAvailPhys,MemStat.dwAvailPhys/1024/1024);    

StrUsedMemory.Format("系统已用内存:%ld字节,大约等于:%ld   M   Byte/n",     MemStat.dwTotalPhys-MemStat.dwAvailPhys,     MemStat.dwTotalPhys/1024/1024-MemStat.dwAvailPhys/1024/1024);

StrInfo+=StrTotalMemory+StrUsedMemory+StrFreeMemory;    

AfxMessageBox(StrInfo);

 

你可能感兴趣的:(获取内存信息)