移除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;