Tool.Net 开源-SystemInformation 类

移除Tool.Utils.Other.SystemInformation类,因为它是特定平台的封装

源码公开如下:

需要引用:System.Management 包
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Management;
using System.Runtime.InteropServices;
using System.Text;

namespace Tool.Utils.Other
{
   
    /// <summary>
    /// 系统信息封装类(仅微软系统)
    /// </summary>
    /// <remarks>代码由逆血提供支持</remarks>
    public static class SystemInformation
    {
   
        /// <summary>
        /// 
        /// </summary>
        /// <param name="WinDir"></param>
        /// <param name="count"></param>
        [DllImport("kernel32.dll")]
        private static extern void GetWindowsDirectory(StringBuilder WinDir, int count);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="SysDir"></param>
        /// <param name="count"></param>
        [DllImport("kernel32")]
        private static extern void GetSystemDirectory(StringBuilder SysDir, int count);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="memibfo"></param>
        [DllImport("kernel32.dll")]
        private static extern void GlobalMemoryStatus(ref MemoryInformation memibfo);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="memibfo"></param>
        [DllImport("kernel32.dll")]
        private static extern void GlobalMemoryStatusEx(ref MEMORYSTATUSEX memibfo);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="cpuinfo"></param>
        [DllImport("kernel32.dll")]
        private static extern void GetSystemInfo(ref CPUInformation cpuinfo);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="stinfo"></param>
        [DllImport("kernel32.dll")]
        private static extern void GetSystemTime(ref TimeInformation stinfo);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="DestIP"></param>
        /// <param name="SrcIP"></param>
        /// <param name="MacAddr"></param>
        /// <param name="PhyAddrLen"></param>
        /// <returns></returns>
        [DllImport("Iphlpapi.dll")]
        private static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 MacAddr, ref Int32 PhyAddrLen);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="ipaddr"></param>
        /// <returns></returns>
        [DllImport("Ws2_32.dll")]
        private static extern Int32 Inet_addr(string ipaddr);


        /// <summary>
        /// 更加详细的内存信息对象
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct MEMORYSTATUSEX
        {
   
            /// <summary>
            /// 长度
            /// </summary>
            public uint dwLength;
            /// <summary>
            /// 内存使用率
            /// </summary>
            public uint dwMemoryLoad;
            /// <summary>
            /// 总物理内存 此处全是以字节为单位
            /// </summary>
            public ulong ullTotalPhys;
            /// <summary>
            /// 可用物理内存
            /// </summary>
            public ulong ullAvailPhys;      //可用物理内存
            /// <summary>
            /// 交换文件总大小
            /// </summary>
            public ulong ullTotalPageFile;
            /// <summary>
            /// 可用交换文件大小
            /// </summary>
            public ulong ullAvailPageFile;
            /// <summary>
            /// 总虚拟内存
            /// </summary>
            public ulong ullTotalVirtual;
            /// <summary>
            /// 可用虚拟内存大小
            /// </summary>
            public ulong ullAvailVirtual;
            /// <summary>
            /// 扩展效用虚拟现实
            /// </summary>
            public ulong ullAvailExtendedVirtual;
        }

        /// <summary>
        /// 内存信息结构体
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct MemoryInformation
        {
   
            /// <summary>
            /// 长度
            /// </summary>
            public uint Length;

            /// <summary>
            /// 内存使用率
            /// </summary>
            public uint MemoryUtilizationRate;

            /// <summary>
            /// 总物理内存 此处全是以字节为单位
            /// </summary>
            public uint TotalPhysicalMemory;

            /// <summary>
            /// 可用物理内存
            /// </summary>
            public uint FreePhysicalMemory;

            /// <summary>
            /// 交换文件总大小
            /// </summary>
            public uint TotalSizeOfSwapFile;

            /// <summary>
            /// 可用交换文件大小
            /// </summary>
            public uint AvailableExchangeFileSize;

            /// <summary>
            /// 总虚拟内存
            /// </summary>
            public uint TotalVirtualMemory;

            /// <summary>
            /// 可用虚拟内存大小
            /// </summary>
            public uint VirtualMemorySizeAvailable;
        }

        /// <summary>
        /// cpu信息结构体
        /// </summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct CPUInformation
        {
   
            /// <summary>
            /// cpu的OemId
            /// </summary>
            public uint OemId;

            /// <summary>
            /// cpu页面大小
            /// </summary>
            public uint CPUPageSize;

            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值