private static MemoryStatusEx GetMemoryStatusExInternal() { var memInfo = new MemoryStatusEx { dwLength = 64 }; //此方法为手动Hack,按照填充规则计算大小,祝我好运 _ = GlobalMemoryStatusEx(ref memInfo); //实践证明,必须有人接收返回值,否则会报错 return(memInfo); }
[DllImport("kernel32.dll", EntryPoint = "GlobalMemoryStatusEx", CallingConvention = CallingConvention.StdCall)] //此处一定要用Ex,否则内存计算不全 private static extern int GlobalMemoryStatusEx(ref MemoryStatusEx lpBuffer);