using System;
using System.Runtime.InteropServices;
/*
typedef struct _MEMORYSTATUS
{
DWORD dwLength;
DWORD dwMemoryLoad;
DWORD dwTotalPhys;
DWORD dwAvailPhys;
DWORD dwTotalPageFile;
DWORD dwAvailPageFile;
DWORD dwTotalVirtual;
DWORD dwAvailVirtual;
} MEMORYSTATUS;
*/
[ StructLayout( LayoutKind.Sequential )]
public class MemoryStatus
{
public int Length;
public int MemoryLoad;
public int TotalPhys;
public int AvailPhys;
public int TotalPageFile;
public int AvailPageFile;
public int TotalVirtual;
public int AvailVirtual;
}
public class LibWrap
{
[ DllImport( "kernel32", EntryPoint="GlobalMemoryStatus" )]
public static extern void GetMemoryStatus( [ In, Out ] MemoryStatus oMemoryStatus );
}
public class App
{
public static void Main()
{
MemoryStatus oMemoryStatus = new MemoryStatus();
LibWrap.GetMemoryStatus( oMemoryStatus );
Console.WriteLine( "Length: {0}", oMemoryStatus.Length );
Console.WriteLine( "MemoryLoad: {0}", oMemoryStatus.MemoryLoad );
Console.WriteLine( "TotalPhys: {0}", oMemoryStatus.TotalPhys );
Console.WriteLine( "AvailPhys: {0}", oMemoryStatus.AvailPhys );
Console.WriteLine( "TotalPageFile: {0}", oMemoryStatus.TotalPageFile );
Console.WriteLine( "AvailPageFile: {0}", oMemoryStatus.AvailPageFile );
Console.WriteLine( "TotalVirtual: {0}", oMemoryStatus.TotalVirtual );
Console.WriteLine( "AvailVirtual: {0}", oMemoryStatus.AvailVirtual );
}
}