andrew4582

Machine Memory Status - Win32Memory

Apr 9th, 2013
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.73 KB | None | 0 0
  1.     public class Win32Memory
  2.     {
  3.         [return: MarshalAs(UnmanagedType.Bool)]
  4.         [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  5.         static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer);
  6.  
  7.         [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
  8.         class MEMORYSTATUSEX
  9.         {
  10.             public uint dwLength;
  11.             public uint dwMemoryLoad;
  12.             public ulong ullTotalPhys;
  13.             public ulong ullAvailPhys;
  14.             public ulong ullTotalPageFile;
  15.             public ulong ullAvailPageFile;
  16.             public ulong ullTotalVirtual;
  17.             public ulong ullAvailVirtual;
  18.             public ulong ullAvailExtendedVirtual;
  19.             public MEMORYSTATUSEX()
  20.             {
  21.                 this.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
  22.             }
  23.         }
  24.  
  25.         public static Win32MemoryInfo GetTotalMemory()
  26.         {
  27.             MEMORYSTATUSEX memStatus = new MEMORYSTATUSEX();
  28.             if (GlobalMemoryStatusEx(memStatus))
  29.             {
  30.                 Win32MemoryInfo minfo = new Win32MemoryInfo();
  31.                 minfo.TotalPhys = (long)memStatus.ullTotalPhys;
  32.                 minfo.AvailPhys = (long)memStatus.ullAvailPhys;
  33.                 minfo.TotalPageFile = (long)memStatus.ullTotalPageFile;
  34.                 minfo.AvailPageFile = (long)memStatus.ullAvailPageFile;
  35.                 minfo.TotalVirtual = (long)memStatus.ullTotalVirtual;
  36.                 minfo.AvailVirtual = (long)memStatus.ullAvailVirtual;
  37.                 minfo.AvailExtendedVirtual = (long)memStatus.ullAvailExtendedVirtual;
  38.                 return minfo;
  39.             }
  40.             return null;
  41.         }
  42.  
  43.         public class Win32MemoryInfo
  44.         {
  45.             public long TotalPhys { get; set; }
  46.             public long AvailPhys { get; set; }
  47.             public long TotalPageFile { get; set; }
  48.             public long AvailPageFile { get; set; }
  49.             public long TotalVirtual { get; set; }
  50.             public long AvailVirtual { get; set; }
  51.             public long AvailExtendedVirtual { get; set; }
  52.         }
  53.     }
Advertisement
Add Comment
Please, Sign In to add comment