summaryrefslogtreecommitdiff
path: root/src/tool_doswin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tool_doswin.c')
-rw-r--r--src/tool_doswin.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/tool_doswin.c b/src/tool_doswin.c
index a64a81633..0743c7183 100644
--- a/src/tool_doswin.c
+++ b/src/tool_doswin.c
@@ -697,6 +697,32 @@ cleanup:
return slist;
}
+LARGE_INTEGER Curl_freq;
+bool Curl_isVistaOrGreater;
+
+CURLcode win32_init(void)
+{
+ OSVERSIONINFOEXA osvi;
+ unsigned __int64 mask = 0;
+ unsigned char op = VER_GREATER_EQUAL;
+
+ memset(&osvi, 0, sizeof(osvi));
+ osvi.dwOSVersionInfoSize = sizeof(osvi);
+ osvi.dwMajorVersion = 6;
+ VER_SET_CONDITION(mask, VER_MAJORVERSION, op);
+ VER_SET_CONDITION(mask, VER_MINORVERSION, op);
+
+ if(VerifyVersionInfoA(&osvi, (VER_MAJORVERSION | VER_MINORVERSION), mask))
+ Curl_isVistaOrGreater = true;
+ else if(GetLastError() == ERROR_OLD_WIN_VERSION)
+ Curl_isVistaOrGreater = false;
+ else
+ return CURLE_FAILED_INIT;
+
+ QueryPerformanceFrequency(&Curl_freq);
+ return CURLE_OK;
+}
+
#endif /* WIN32 */
#endif /* MSDOS || WIN32 */