diff --git a/src/common/tuklib_physmem.c b/src/common/tuklib_physmem.c
index 4053ad0..c49db6d 100644
--- a/src/common/tuklib_physmem.c
+++ b/src/common/tuklib_physmem.c
@@ -79,6 +79,13 @@ tuklib_physmem(void)
 	uint64_t ret = 0;
 
 #if defined(_WIN32) || defined(__CYGWIN__)
+#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
+	MEMORYSTATUSEX ms;
+	ms.dwLength = sizeof(ms);
+	if(!GlobalMemoryStatusEx(&ms))
+		return 0;
+	return ms.ullTotalPhys;
+#else
 	if ((GetVersion() & 0xFF) >= 5) {
 		// Windows 2000 and later have GlobalMemoryStatusEx() which
 		// supports reporting values greater than 4 GiB. To keep the
@@ -107,6 +114,7 @@ tuklib_physmem(void)
 		GlobalMemoryStatus(&meminfo);
 		ret = meminfo.dwTotalPhys;
 	}
+#endif
 
 #elif defined(__OS2__)
 	unsigned long mem;
