C# 获取系统硬件可用信息

如何获取系统可用磁盘和可用内存?html

1 获取磁盘信息

这个有自带的 DriveInfo 能够用。
DriveInfo 类 (System.IO) | Microsoft Docsapi

2 获取内存信息

参考:C#得到系统内存占用状况 | 柊ui

偷懒能够直接看:code

//定义内存的信息结构
    [StructLayout(LayoutKind.Sequential)]
    public struct MEMORY_INFO
    {
        public uint dwLength; //当前结构体大小
        public uint dwMemoryLoad; //当前内存使用率
        public ulong ullTotalPhys; //总计物理内存大小
        public ulong ullAvailPhys; //可用物理内存大小
        public ulong ullTotalPageFile; //总计交换文件大小
        public ulong ullAvailPageFile; //总计交换文件大小
        public ulong ullTotalVirtual; //总计虚拟内存大小
        public ulong ullAvailVirtual; //可用虚拟内存大小
        public ulong ullAvailExtendedVirtual; //保留 这个值始终为0
    }

    class MemoryHelper
    {
        [DllImport("kernel32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool GlobalMemoryStatusEx(ref MEMORY_INFO mi);

        /// <summary>
        /// 得到当前内存使用状况
        /// </summary>
        /// <returns></returns>
        private static MEMORY_INFO GetMemoryStatus()
        {
            MEMORY_INFO mi = new MEMORY_INFO();
            mi.dwLength = (uint) System.Runtime.InteropServices.Marshal.SizeOf(mi);
            GlobalMemoryStatusEx(ref mi);
            return mi;
        }

        /// <summary>
        /// 得到当前可用物理内存大小
        /// </summary>
        /// <returns>当前可用物理内存(B)</returns>
        private static ulong GetAvailPhys()
        {
            MEMORY_INFO mi = GetMemoryStatus();
            return mi.ullAvailPhys;
        }

        public static ulong GetAvailablePhysMemorySize()
        {
            try
            {
                return GetAvailPhys();
            }
            catch (Exception)
            {
                return 0;
            }
        }

    }

原文连接:
http://www.javashuo.com/article/p-rsolkkax-gu.htmlhtm

相关文章
相关标签/搜索