Raspuns: Folosing functia GlobalMemoryStatus sau GlobalMemoryStatusEx.
Exemple
Code: Select all
#include <windows.h>
#include <stdio.h>
DWORD GetTotalPhysicalMemory()
{
MEMORYSTATUS memStatus = {0};
::GlobalMemoryStatus(&memStatus);
return memStatus.dwTotalPhys;
}
int main()
{
const DWORD dwMBFactor = 0x00100000;
DWORD dwTotalPhys = GetTotalPhysicalMemory();
printf("Total physical memory: %u MB", dwTotalPhys / dwMBFactor);
system("pause");
return 0;
}
Code: Select all
#include <windows.h>
#include <stdio.h>
DWORDLONG GetTotalPhysicalMemory()
{
MEMORYSTATUSEX memStatusEx = {0};
memStatusEx.dwLength = sizeof(MEMORYSTATUSEX);
BOOL bRet = ::GlobalMemoryStatusEx(&memStatusEx);
return memStatusEx.ullTotalPhys;
}
int main()
{
const DWORD dwMBFactor = 0x00100000;
DWORDLONG dwTotalPhys = GetTotalPhysicalMemory();
printf("Total physical memory: %u MB", dwTotalPhys / dwMBFactor);
system("pause");
return 0;
}
- GlobalMemoryStatusEx este de preferat in locul GlobalMemoryStatus pentru ca
- Pentru ca GlobalMemoryStatus sa raporteze corect o valoare intre 2 si 4 GB, trebuie setata opitunea /LARGEADDRESSAWARE
- GlobalMemoryStatus nu poate raporta o valoare mai mare sau egala cu 4 GB.
<< Back to Windows API Index