1 // Windows/System.cpp
\r
5 #include "../Common/Defs.h"
\r
12 UInt32 GetNumberOfProcessors()
\r
14 SYSTEM_INFO systemInfo;
\r
15 GetSystemInfo(&systemInfo);
\r
16 return (UInt32)systemInfo.dwNumberOfProcessors;
\r
21 #if !defined(_WIN64) && defined(__GNUC__)
\r
23 typedef struct _MY_MEMORYSTATUSEX {
\r
26 DWORDLONG ullTotalPhys;
\r
27 DWORDLONG ullAvailPhys;
\r
28 DWORDLONG ullTotalPageFile;
\r
29 DWORDLONG ullAvailPageFile;
\r
30 DWORDLONG ullTotalVirtual;
\r
31 DWORDLONG ullAvailVirtual;
\r
32 DWORDLONG ullAvailExtendedVirtual;
\r
33 } MY_MEMORYSTATUSEX, *MY_LPMEMORYSTATUSEX;
\r
37 #define MY_MEMORYSTATUSEX MEMORYSTATUSEX
\r
38 #define MY_LPMEMORYSTATUSEX LPMEMORYSTATUSEX
\r
42 typedef BOOL (WINAPI *GlobalMemoryStatusExP)(MY_LPMEMORYSTATUSEX lpBuffer);
\r
49 MY_MEMORYSTATUSEX stat;
\r
50 stat.dwLength = sizeof(stat);
\r
53 if (!::GlobalMemoryStatusEx(&stat))
\r
55 return MyMin(stat.ullTotalVirtual, stat.ullTotalPhys);
\r
58 GlobalMemoryStatusExP globalMemoryStatusEx = (GlobalMemoryStatusExP)
\r
59 ::GetProcAddress(::GetModuleHandle(TEXT("kernel32.dll")), "GlobalMemoryStatusEx");
\r
60 if (globalMemoryStatusEx != 0 && globalMemoryStatusEx(&stat))
\r
61 return MyMin(stat.ullTotalVirtual, stat.ullTotalPhys);
\r
65 stat.dwLength = sizeof(stat);
\r
66 ::GlobalMemoryStatus(&stat);
\r
67 return MyMin(stat.dwTotalVirtual, stat.dwTotalPhys);
\r