10 UInt32 GetNumberOfProcessors()
12 SYSTEM_INFO systemInfo;
13 GetSystemInfo(&systemInfo);
14 return (UInt32)systemInfo.dwNumberOfProcessors;
17 #if !defined(_WIN64) && defined(__GNUC__)
19 typedef struct _MY_MEMORYSTATUSEX {
22 DWORDLONG ullTotalPhys;
23 DWORDLONG ullAvailPhys;
24 DWORDLONG ullTotalPageFile;
25 DWORDLONG ullAvailPageFile;
26 DWORDLONG ullTotalVirtual;
27 DWORDLONG ullAvailVirtual;
28 DWORDLONG ullAvailExtendedVirtual;
29 } MY_MEMORYSTATUSEX, *MY_LPMEMORYSTATUSEX;
33 #define MY_MEMORYSTATUSEX MEMORYSTATUSEX
34 #define MY_LPMEMORYSTATUSEX LPMEMORYSTATUSEX
38 typedef BOOL (WINAPI *GlobalMemoryStatusExP)(MY_LPMEMORYSTATUSEX lpBuffer);
42 MY_MEMORYSTATUSEX stat;
43 stat.dwLength = sizeof(stat);
45 if (!::GlobalMemoryStatusEx(&stat))
47 return stat.ullTotalPhys;
49 GlobalMemoryStatusExP globalMemoryStatusEx = (GlobalMemoryStatusExP)
50 ::GetProcAddress(::GetModuleHandle(TEXT("kernel32.dll")),
51 "GlobalMemoryStatusEx");
52 if (globalMemoryStatusEx != 0)
53 if (globalMemoryStatusEx(&stat))
54 return stat.ullTotalPhys;
57 stat.dwLength = sizeof(stat);
58 GlobalMemoryStatus(&stat);
59 return stat.dwTotalPhys;