Używam funkcji GlobalMemoryStatusEx
do pobierania informacji o pamięci, ale ta funkcja nie działa poprawnie. Zwraca 0 dla wszystkich właściwości. Nie sądzę, że ta funkcja działa w moim środowisku Windows 7.Jak mogę uzyskać całkowitą pamięć fizyczną w języku C#?
[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;
}
Czy ktoś może mi powiedzieć, gdzie popełniłem błąd przy użyciu niewłaściwego kodu?
Czy próbowałeś WMI? Jest wolniejszy, ale musi działać na każdym systemie operacyjnym. – Restuta