delphi 获取大于2G的物理内存大小

一般情况下,我们是用GlobalMemoryStatus 来获取物理内存大小的 但该API在物理内存大小超过2G的时候,返回值均为2GB。因此,没有办法获取真实的物理内存大小,所以需要对此进行改进。

定义TMemoryStatusEx结构:

[delphi] view plain copy
 
  1. Type  
  2.   TMemoryStatusEx = packed record  
  3.     dwLength: DWORD;  
  4.     dwMemoryLoad: DWORD;  
  5.     ullTotalPhys: Int64;  
  6.     ullAvailPhys: Int64;  
  7.     ullTotalPageFile: Int64;  
  8.     ullAvailPageFile: Int64;  
  9.     ullTotalVirtual: Int64;  
  10.     ullAvailVirtual: Int64;  
  11.     ullAvailExtendedVirtual: Int64;  
  12.   end;  
  13.   
  14. Function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): BOOL; stdcall; external kernel32;  
  15.   
  16.  MemoryStatusEx.dwLength := SizeOf(MemoryStatusEx);  
  17.  GlobalMemoryStatusEx(MemoryStatusEx);  
  18.   
  19. Memo2.Lines.Add(FormatFloat('#,###', ullTotalPhys) );   //如果真实内存超过4G  会显示真实内存 上限为3.5G。 当然 如果机器为64位会真实显示。   



 说明:以上环境针对32位操作系统 如果您的操作系统是64位 不会有以上问题

 

http://blog.csdn.net/genispan/article/details/4350717

posted @ 2017-07-04 15:50  findumars  Views(1272)  Comments(0Edit  收藏  举报