调用API查看系统内存使用状况

此博客展示了使用C#获取内存状态的代码。通过定义结构体和类,利用DllImport调用kernel32的GlobalMemoryStatus函数,最终输出内存的各项状态信息,如内存负载、物理内存总量等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Runtime.InteropServices;

/*
typedef struct _MEMORYSTATUS
{
 DWORD dwLength;
 DWORD dwMemoryLoad;
 DWORD dwTotalPhys;
 DWORD dwAvailPhys;
 DWORD dwTotalPageFile;
 DWORD dwAvailPageFile;
 DWORD dwTotalVirtual;
 DWORD dwAvailVirtual;
} MEMORYSTATUS;
*/

[ StructLayout( LayoutKind.Sequential )]
public class MemoryStatus
{
 public int Length;
 public int MemoryLoad;
 public int TotalPhys;
 public int AvailPhys;
 public int TotalPageFile;
 public int AvailPageFile;
 public int TotalVirtual;
 public int AvailVirtual;
}

public class LibWrap
{
 [ DllImport( "kernel32", EntryPoint="GlobalMemoryStatus" )]
 public static extern void GetMemoryStatus( [ In, Out ] MemoryStatus oMemoryStatus );
}

public class App
{
 public static void Main()
 {
  MemoryStatus oMemoryStatus = new MemoryStatus();

  LibWrap.GetMemoryStatus( oMemoryStatus );

  Console.WriteLine( "Length:        {0}", oMemoryStatus.Length );
  Console.WriteLine( "MemoryLoad:    {0}", oMemoryStatus.MemoryLoad );
  Console.WriteLine( "TotalPhys:     {0}", oMemoryStatus.TotalPhys );
  Console.WriteLine( "AvailPhys:     {0}", oMemoryStatus.AvailPhys );
  Console.WriteLine( "TotalPageFile: {0}", oMemoryStatus.TotalPageFile );
  Console.WriteLine( "AvailPageFile: {0}", oMemoryStatus.AvailPageFile );
  Console.WriteLine( "TotalVirtual:  {0}", oMemoryStatus.TotalVirtual );
  Console.WriteLine( "AvailVirtual:  {0}", oMemoryStatus.AvailVirtual );
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值