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

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

1 获取磁盘信息

这个有自带的 DriveInfo 可以用。
DriveInfo 类 (System.IO) | Microsoft Docs

2 获取内存信息

参考:C#获得系统内存占用情况 | 柊

偷懒可以直接看:


    //定义内存的信息结构
    [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;
            }
        }

    }

原文链接:
https://www.cnblogs.com/jasongrass/p/11794127.html

猜你喜欢

转载自www.cnblogs.com/jasongrass/p/11794127.html