Files
Sourcetrail/src/lib/utility/utilityWindows.cpp
T
mlangkabel dfc6d88432 build: search headers in all source directories
* removed paths in include directives
* changed cmake to provide necessary header search paths
* changed name of version.h to productVersion.h due to name conflict
2018-09-18 19:00:18 +02:00

47 lines
785 B
C++

#include "utilityWindows.h"
#ifdef WIN32
#include <Windows.h>
unsigned long utility::getLargestByteSizeOfAllocatableMemory()
{
MEMORY_BASIC_INFORMATION mbi;
unsigned long start = 0;
bool recording = false;
unsigned long freestart = 0, largestFreestart = 0;
__int64 free = 0, largestFree = 0;
while (true)
{
SIZE_T s = VirtualQuery((LPCVOID)start, &mbi, sizeof(mbi));
if (s != sizeof(mbi)) break;
if (mbi.State == MEM_FREE)
{
if (!recording) freestart = start;
free += mbi.RegionSize;
recording = true;
}
else
{
if (recording)
{
if (free > largestFree)
{
largestFree = free;
largestFreestart = freestart;
}
}
free = 0;
recording = false;
}
start += mbi.RegionSize;
}
return largestFree;
}
#endif // WIN32