92 lines
3.2 KiB
Plaintext
92 lines
3.2 KiB
Plaintext
From a883b47a45ff74ced41dfbd9f748d5c2c61f3c01 Mon Sep 17 00:00:00 2001
|
|
From: Jacek Caban <jacek@codeweavers.com>
|
|
Date: Thu, 19 Mar 2015 14:47:34 +0100
|
|
Subject: Added new versionhelpers.h header.
|
|
|
|
|
|
diff --git a/mingw-w64-headers/include/versionhelpers.h b/mingw-w64-headers/include/versionhelpers.h
|
|
new file mode 100644
|
|
index 0000000..25ea414
|
|
--- /dev/null
|
|
+++ b/mingw-w64-headers/include/versionhelpers.h
|
|
@@ -0,0 +1,79 @@
|
|
+/**
|
|
+ * This file is part of the mingw-w64 runtime package.
|
|
+ * No warranty is given; refer to the file DISCLAIMER within this package.
|
|
+ */
|
|
+
|
|
+#ifndef _INC_VERSIONHELPERS
|
|
+#define _INC_VERSIONHELPERS
|
|
+
|
|
+#include <winapifamily.h>
|
|
+
|
|
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && !defined(__WIDL__)
|
|
+
|
|
+#ifdef __cplusplus
|
|
+#define VERSIONHELPERAPI inline bool
|
|
+#else
|
|
+#define VERSIONHELPERAPI FORCEINLINE BOOL
|
|
+#endif
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsVersionOrGreater(WORD major, WORD minor, WORD servpack)
|
|
+{
|
|
+ OSVERSIONINFOEXW vi = {sizeof(vi),major,minor,0,0,{0},servpack};
|
|
+ return VerifyVersionInfoW(&vi, VER_MAJORVERSION|VER_MINORVERSION|VER_SERVICEPACKMAJOR,
|
|
+ VerSetConditionMask(VerSetConditionMask(VerSetConditionMask(0,
|
|
+ VER_MAJORVERSION,VER_GREATER_EQUAL),
|
|
+ VER_MINORVERSION,VER_GREATER_EQUAL),
|
|
+ VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL));
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsXPOrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 0);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsXPSP1OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 1);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsXPSP2OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 2);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsXPSP3OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 3);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsVistaOrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsVistaSP1OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 1);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsVistaSP2OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 2);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindows7OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 0);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindows7SP1OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 1);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindows8OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8), LOBYTE(_WIN32_WINNT_WIN8), 0);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindows8Point1OrGreater(void) {
|
|
+ return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINBLUE), LOBYTE(_WIN32_WINNT_WINBLUE), 0);
|
|
+}
|
|
+
|
|
+VERSIONHELPERAPI IsWindowsServer(void) {
|
|
+ OSVERSIONINFOEXW vi = {sizeof(vi),0,0,0,0,{0},0,0,0,VER_NT_WORKSTATION};
|
|
+ return !VerifyVersionInfoW(&vi, VER_PRODUCT_TYPE, VerSetConditionMask(0, VER_PRODUCT_TYPE, VER_EQUAL));
|
|
+}
|
|
+
|
|
+#endif
|
|
+#endif
|