需要用到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);