WindowsAPI 获取系统物理内存、虚拟内存和页面文件交换区信息

http://hi.baidu.com/netspirit/blog/item/08c97bf5f4b79f29bd310951.html

WindowsAPI详解—— GlobalMemoryStatusEx|MEMORYSTATUSEX 获取系统物理内存、虚拟内存和页面文件交换区信息

函数原型:

BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)

这是MEMORYSTATUSEX结构的定义
typedef struct _MEMORYSTATUSEX{
DWORD dwLength;                            //结构的长度,在使用函数前必须初始化此值
DWORD dwMemoryLoad;                    //物理内存的使用率(0~100的整数)
DWORDLONG ullTotalPhys;                 //物理内存的总量,以字节为单位(以下均相同)
DWORDLONG ullAvailPhys;                  //物理内存的剩余量
DWORDLONG ullTotalPageFile;             //系统页面文件大小
DWORDLONG ullAvailPageFile;             //系统可用页面文件大小
DWORDLONG ullTotalVirtual;              //虚拟内存的总量
DWORDLONG ullAvailVirtual;              //虚拟内存的剩余量
DWORDLONG ullAvailExtendedVirtual;     //保留,值为0
} MEMORYSTATUSEX,*LPMEMORYSTATUSEX;

获取系统物理内存信息的例子:
bool getMemoryPhysInfo(unsigned __int64 &total, unsigned __int64 &Avail, unsigned long &Usage)
{
MEMORYSTATUSEX mem;
mem.dwLength=sizeof(MEMORYSTATUSEX);
if(!GlobalMemoryStatusEx(&mem))
return false;
total=mem.ullTotalPhys;              //总物理内存(单位是字节)
Avail=mem.ullAvailPhys;              //可用物理内存(单位是字节)
Usage=mem.dwMemoryLoad;      //物理内存使用率(1~100的整数)
return true;
}

获取系统虚拟内存信息的例子:
bool getMemoryVirtualInfo(unsigned __int64 &total, unsigned __int64 &Avail)
{
MEMORYSTATUSEX mem;
mem.dwLength=sizeof(MEMORYSTATUSEX);
if(!GlobalMemoryStatusEx(&mem))
return false;
total=mem.ullTotalVirtual;     //总虚拟内存
Avail=mem.ullAvailVirtual;     //虚拟内存剩余
return true;
}

获取系统页面文件(交换区)信息的例子:
bool getMemoryPageFileInfo(unsigned __int64 & total,unsigned __int64 & Avail)
{
MEMORYSTATUSEX mem;
mem.dwLength=sizeof(MEMORYSTATUSEX);
if(!GlobalMemoryStatusEx(&mem))
return false;
total=mem.ullTotalPageFile;     //总的交换区大小
Avail=mem.ullAvailPageFile;     //剩余交换区大小
return true;
}

你可能感兴趣的:(c,struct)