File diff r25625:c14e95bbb24a → r25626:260a951230d5
src/os/windows/win32.cpp
Show inline comments
 
@@ -707,38 +707,6 @@ int OTTDStringCompare(const char *s1, co
 
	return CompareString(MAKELCID(_current_language->winlangid, SORT_DEFAULT), NORM_IGNORECASE, s1_buf, -1, s2_buf, -1);
 
}
 

	
 
/**
 
 * Is the current Windows version Vista or later?
 
 * @return True if the current Windows is Vista or later.
 
 */
 
bool IsWindowsVistaOrGreater()
 
{
 
	typedef BOOL (WINAPI * LPVERIFYVERSIONINFO)(LPOSVERSIONINFOEX, DWORD, DWORDLONG);
 
	typedef ULONGLONG (NTAPI * LPVERSETCONDITIONMASK)(ULONGLONG, DWORD, BYTE);
 
#ifdef UNICODE
 
	static LPVERIFYVERSIONINFO _VerifyVersionInfo = (LPVERIFYVERSIONINFO)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerifyVersionInfoW");
 
#else
 
	static LPVERIFYVERSIONINFO _VerifyVersionInfo = (LPVERIFYVERSIONINFO)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerifyVersionInfoA");
 
#endif
 
	static LPVERSETCONDITIONMASK _VerSetConditionMask = (LPVERSETCONDITIONMASK)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerSetConditionMask");
 

	
 
	if (_VerifyVersionInfo != nullptr && _VerSetConditionMask != nullptr) {
 
		OSVERSIONINFOEX osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
 
		DWORDLONG dwlConditionMask = 0;
 
		dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
 
		dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);
 
		dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
 

	
 
		osvi.dwMajorVersion = 6;
 
		osvi.dwMinorVersion = 0;
 
		osvi.wServicePackMajor = 0;
 

	
 
		return _VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;
 
	} else {
 
		return LOBYTE(GetVersion()) >= 6;
 
	}
 
}
 

	
 
#ifdef _MSC_VER
 
/* Based on code from MSDN: https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx */
 
const DWORD MS_VC_EXCEPTION = 0x406D1388;