【发布时间】:2010-12-05 22:00:21
【问题描述】:
我正在使用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;
}
谁能告诉我我的代码哪里出错了?
【问题讨论】:
-
你试过WMI吗?它速度较慢,但必须适用于所有操作系统。
标签: c# memory-management