У меня есть следующий код, который (правильно) дает мне общую установленную память на моем компьютере (обратите внимание, не общую физическую память, которая будет немного меньше, чем установленная память):
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetPhysicallyInstalledSystemMemory(out long TotalMemoryInKilobytes);
public float getInstalledRAM()
{
long memKb;
GetPhysicallyInstalledSystemMemory(out memKb);
return float.Parse((memKb / 1024 / 1024).ToString());
}
Однако, когда я запускаю ее на своей тестовой виртуальной машине, она дает мне на 1 ГБ меньше, чем должна (не знаю, имеет ли значение это значение, но в итоге это дает мне неправильное значение).Любые возможные причины для этого?