using System; using System.Text; using System.Runtime.InteropServices; namespace Kdt.CF.Utility { public class Memory { static MEMORYSTATUS status = new MEMORYSTATUS(); #region P/V invoke private struct MEMORYSTATUS { public UInt32 dwLength; public UInt32 dwMemoryLoad; public UInt32 dwTotalPhys; public UInt32 dwAvailPhys; public UInt32 dwTotalPageFile; public UInt32 dwAvailPageFile; public UInt32 dwTotalVirtual; public UInt32 dwAvailVirtual; } [DllImport("CoreDll.dll")] private static extern void GlobalMemoryStatus ( ref MEMORYSTATUS lpBuffer ); [DllImport("CoreDll.dll")] private static extern UInt32 GetSystemMemoryDivision ( ref UInt32 lpdwStorePages, ref UInt32 lpdwRamPages, ref UInt32 lpdwPageSize ); #endregion /// <summary> /// 更新内存信息 /// </summary> public static void UpdateStatus() { GlobalMemoryStatus(ref status); } /// <summary> /// 系统物理内存 /// </summary> public static UInt32 TotalPhysicalMemory { get { return status.dwTotalPhys; } } /// <summary> /// 可用物理内存 /// </summary> public static UInt32 AvilablePhysicalMemory { get { return status.dwAvailPhys; } } /// <summary> /// 系统虚拟内存 /// </summary> public static UInt32 TotalVirtualMemory { get { return status.dwTotalVirtual; } } /// <summary> /// 可用虚拟内存 /// </summary> public static UInt32 AvilableVirtualMemory { get { return status.dwAvailVirtual; } } /// <summary> /// 系统页 /// </summary> public static UInt32 TotalPageFile { get { return status.dwTotalPageFile; } } /// <summary> /// 可用页 /// </summary> public static UInt32 AvilablePageFile { get { return status.dwAvailPageFile; } } } }