如何在C#中获取总物理内存?

如何在C#中获取总物理内存?,第1张

概述我正在使用GlobalMemoryStatusEx函数来检索有关内存的信息,但是此功能无法正常工作.它为所有属性返回0.我不认为这个功能在我的 Windows 7环境中有效. [StructLayout(LayoutKind.Sequential)] internal struct MEMORYSTATUSEX { internal uint dwLength; 我正在使用GlobalMemoryStatusEx函数来检索有关内存的信息,但是此功能无法正常工作.它为所有属性返回0.我不认为这个功能在我的 Windows 7环境中有效.
[StructLayout(LayoutKind.Sequential)]    internal struct MEMORYSTATUSEX    {        internal uint DWLength;        internal uint DWMemoryLoad;        internal ulong ullTotalPhys;        internal ulong ullAvailPhys;        internal ulong ullTotalPagefile;        internal ulong ullAvailPagefile;        internal ulong ullTotalVirtual;        internal ulong ullAvailVirtual;        internal ulong ullAvailExtendedVirtual;    }    [return: MarshalAs(UnmanagedType.Bool)]    [Dllimport("Kernel32.dll",CharSet = CharSet.auto,SetLastError = true)]    internal static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer);    private voID btnGlobalMemoryStatusEX_Click(object sender,EventArgs e)    {        MEMORYSTATUSEX statEX = new MEMORYSTATUSEX();        GlobalMemoryStatusEx(ref statEX);        double d = (double)statEX.ullTotalPhys;    }

有人可以告诉我错误代码出错了吗?

解决方法 我发现我的错误:
http://www.pinvoke.net/default.aspx/kernel32/GlobalMemoryStatusEx.html

我变了

internal static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer);

static extern bool GlobalMemoryStatusEx([In,Out] MEMORYSTATUSEX lpBuffer);

并改变了

GlobalMemoryStatusEx(ref statEX);

GlobalMemoryStatusEx(statEX);

它正常工作坦克

总结

以上是内存溢出为你收集整理的如何在C#中获取物理内存?全部内容,希望文章能够帮你解决如何在C#中获取总物理内存?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1236390.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存