# 017 系统内存信息 内存大小 空闲内存 5
GetSystemInfo 函数
函数原型:
1 void WINAPI GetSystemInfo( _Out_ LPSYSTEM_INFO lpSystemInfo);
参数1:lpSystemInfo [out]
返回一个 SYSTEM_INFO 结构体指针信息
结构体原型:
1 typedef struct _SYSTEM_INFO { 2 union { 3 DWORD dwOemId; 4 struct { 5 WORD wProcessorArchitecture; 6 WORD wReserved; 7 }; 8 }; 9 DWORD dwPageSize; 10 LPVOID lpMinimumApplicationAddress; 11 LPVOID lpMaximumApplicationAddress; 12 DWORD_PTR dwActiveProcessorMask; 13 DWORD dwNumberOfProcessors; 14 DWORD dwProcessorType; 15 DWORD dwAllocationGranularity; 16 WORD wProcessorLevel; 17 WORD wProcessorRevision; 18 } SYSTEM_INFO;
SYSTEM_INFO结构体参数说明:
wProcessorArchitecture: Word; {处理器的体系结构}
wReserved: Word; {保留}
dwPageSize: DWORD; {分页大小}
lpMinimumApplicationAddress: Pointer;{最小寻址空间}
lpMaximumApplicationAddress: Pointer;{最大寻址空间}
dwActiveProcessorMask: DWORD; {处理器掩码; 0..31 表示不同的处理器}
dwNumberOfProcessors: DWORD; {处理器数目}
dwProcessorType: DWORD; {处理器类型}
dwAllocationGranularity: DWORD; {虚拟内存空间的粒度}
wProcessorLevel: Word; {处理器等级}
wProcessorRevision: Word); {处理器版本}
GlobalMemoryStatus 函数
Win32 API函数。 此函数用来获得当前可用的物理和虚拟内存信息
函数原型:
1 void WINAPI GlobalMemoryStatus(_Out_ LPMEMORYSTATUS lpBuffer);
参数1:lpBuffer [out]
返回一个 lpBuffer MEMORYSTATUS 结构体
1 typedef struct _MEMORYSTATUS { 2 DWORD dwLength; // MEMORYSTATUS结构的大小 3 DWORD dwMemoryLoad; // 返回一个介于0~100之间的值,用来指示当前系统内存的使用率 4 DWORD dwTotalPhys; // 返回总的物理内存大小,以字节(byte)为单位。 5 DWORD dwAvailPhys; // 返回可用的物理内存大小,以字节(byte)为单位。 6 DWORD dwTotalPageFile; // 显示可以存在页面文件中的字节数。注意这个数值并不表示在页面文件在磁盘上的真实物理大小。 7 DWORD dwAvailPageFile; // 返回可用的页面文件大小,以字节(byte)为单位。 8 DWORD dwTotalVirtual; // 返回调用进程的用户模式部分的全部可用虚拟地址空间,以字节(byte)为单位。 9 DWORD dwAvailVirtual; // 返回调用进程的用户模式部分的实际自由可用的虚拟地址空间,以字节(byte)为单位。 10 } MEMORYSTATUS, *LPMEMORYSTATUS;
1 #define UNICODE 2 #include <windows.h> 3 #include <stdio.h> 4 5 int main() 6 { 7 SYSTEM_INFO sysInfo; 8 GetSystemInfo(&sysInfo); 9 printf("页面大小:%d\r\n",sysInfo.dwPageSize); 10 printf("分配颗粒:%d\r\n",sysInfo.dwAllocationGranularity); 11 printf("用户区开始地址:0x%d\r\n",sysInfo.lpMinimumApplicationAddress); 12 printf("用户最大地址:0x%d\r\n",sysInfo.lpMaximumApplicationAddress); 13 14 MEMORYSTATUS memStatus; 15 GlobalMemoryStatus(&memStatus); 16 17 printf("使用比:%d%%\r\n", memStatus.dwMemoryLoad); 18 printf("总内存大小:%x%%\r\n", memStatus.dwTotalPhys); 19 printf("可内存大小:%x%%\r\n", memStatus.dwAvailPhys); 20 return 0; 21 }