1:获得系统信息
1:GetSystemInfo()能够获得当前页面大小和分配粒度
2:32位程序可通过WOW64(Windows 32-bit On Windows 64-bit模拟层)运行在64位系统下
3:检查程序是否运行在WOW64中:
BOOL IsWow64Process( //返回false参数错误
HANDLE hProcess, //需要检查的句柄
PBOOL Wow64Process //32位程序运行在64位程序此值才返回TRUE
);
4:运行在WOW64的32为程序调用GetSystemInfo()获得的信息是模拟层信息,比如页面大小会得到4KB,但实际上IA-64页面大小是8KB
此时应该调用
void GetNativeSystemInfo(
LPSYSTEM_INFO lpSystemInfo
);
获得真实系统信息
2:获得虚拟内存信息
GlobalMemoryStatus();
GlobalMemoryStatusEx(); //64位版本
typedef struct _MEMORYSTATUS
{
DWORD dwLength;
DWORD dwMemoryLoad;
SIZE_T dwTotalPhys; //物理内存总量,此值少于真实物理内存总量,是因为
//系统启动过程中会为非页面缓冲池保留一部分内存
SIZE_T dwAvailPhys;
SIZE_T dwTotalPageFile; //页交换文件,系统可根据需要增大或减小
SIZE_T dwAvailPageFile;
SIZE_T dwTotalVirtual; //大小为2GB-64KB空指针赋值区-64KB