win32: Fixed use of deprecated function 'GetVersionInfoEx' for VC12

Starting with Visual Studio 2013 (VC12) and Windows 8.1 the
GetVersionInfoEx() function has been marked as deprecated and it's
return value atered. Updated connect.c and curl_sspi.c to use
VerifyVersionInfo() where possible, which has been available since
Windows 2000.
This commit is contained in:
Steve Holme
2014-01-15 20:11:02 +00:00
parent 8b984641f2
commit c7a76bb056
2 changed files with 57 additions and 13 deletions

View File

@@ -916,19 +916,38 @@ void Curl_sndbufset(curl_socket_t sockfd)
int val = CURL_MAX_WRITE_SIZE + 32;
int curval = 0;
int curlen = sizeof(curval);
DWORD majorVersion = 6;
OSVERSIONINFO osver;
static int detectOsState = DETECT_OS_NONE;
if(detectOsState == DETECT_OS_NONE) {
#if !defined(VerifyVersionInfo)
OSVERSIONINFO osver;
memset(&osver, 0, sizeof(osver));
osver.dwOSVersionInfoSize = sizeof(osver);
detectOsState = DETECT_OS_PREVISTA;
if(GetVersionEx(&osver)) {
if(osver.dwMajorVersion >= 6)
if(osver.dwMajorVersion >= majorVersion)
detectOsState = DETECT_OS_VISTA_OR_LATER;
}
#else
ULONGLONG majorVersionMask;
OSVERSIONINFOEX osver;
memset(&osver, 0, sizeof(osver));
osver.dwOSVersionInfoSize = sizeof(osver);
osver.dwMajorVersion = majorVersion;
majorVersionMask = VerSetConditionMask(0, VER_MAJORVERSION, VER_EQUAL);
if(VerifyVersionInfo(&osver, VER_MAJORVERSION, majorVersionMask))
detectOsState = DETECT_OS_VISTA_OR_LATER;
else
detectOsState = DETECT_OS_PREVISTA;
#endif
}
if(detectOsState == DETECT_OS_VISTA_OR_LATER)
return;
@@ -940,7 +959,6 @@ void Curl_sndbufset(curl_socket_t sockfd)
}
#endif
/*
* singleipconnect()
*