017 系统内存信息 内存大小 空闲内存 5

# 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 }

 

posted @ 2017-08-01 16:20  ☆﹎夜﹎☆  阅读(168)  评论(0编辑  收藏  举报