Alrighly。所以。我的目标是在Windows XP-10上获得总系统内存。我可以在windows vista及更高版本上使用GetPhysicallyInstalledSystemMemory。它就像一个魅力:)然而,在Windows XP上我必须使用GlobalMemoryStatusEx,它不考虑硬件保留内存。因此,它将报告,例如,511Mb而不是512Mb。关于如何解决这个问题的任何线索?
这是我到目前为止所拥有的。再次。它只适用于XP
#define _WIN32_WINNT 0x501
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
typedef (CALLBACK *GPIM)(PULONGLONG);
int GetTotalRam()
{
unsigned long long total;
FARPROC FuncAddr = GetProcAddress(GetModuleHandle("kernel32.dll"), "GetPhysicallyInstalledSystemMemory");
if (FuncAddr)
{
((GPIM)FuncAddr)(&total);
}
else
{
MEMORYSTATUSEX ms;
memset(&ms, 0, sizeof(MEMORYSTATUSEX));
ms.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&ms);
total = ms.ullTotalPhys / 1024;
}
total /= 1024;
return (int)total;
}