113 lines
3.7 KiB
C
113 lines
3.7 KiB
C
![]() |
#ifndef UI_VERSION_HELPERS_H_
|
|||
|
#define UI_VERSION_HELPERS_H_
|
|||
|
|
|||
|
#pragma once
|
|||
|
#include <specstrings.h> // for _In_, etc.
|
|||
|
|
|||
|
namespace ui
|
|||
|
{
|
|||
|
|
|||
|
#define _WIN32_WINNT_NT4 0x0400
|
|||
|
#define _WIN32_WINNT_WIN2K 0x0500
|
|||
|
#define _WIN32_WINNT_WINXP 0x0501
|
|||
|
#define _WIN32_WINNT_WS03 0x0502
|
|||
|
#define _WIN32_WINNT_WIN6 0x0600
|
|||
|
#define _WIN32_WINNT_VISTA 0x0600
|
|||
|
#define _WIN32_WINNT_WS08 0x0600
|
|||
|
#define _WIN32_WINNT_LONGHORN 0x0600
|
|||
|
#define _WIN32_WINNT_WIN7 0x0601
|
|||
|
#define _WIN32_WINNT_WIN8 0x0602
|
|||
|
#define _WIN32_WINNT_WINBLUE 0x0603
|
|||
|
#define _WIN32_WINNT_WINTHRESHOLD 0x0A00 /* ABRACADABRA_THRESHOLD*/
|
|||
|
#define _WIN32_WINNT_WIN10 0x0A00 /* ABRACADABRA_THRESHOLD*/
|
|||
|
|
|||
|
#define VERSIONHELPERAPI inline bool
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor)
|
|||
|
{
|
|||
|
OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
|
|||
|
DWORDLONG const dwlConditionMask = VerSetConditionMask(
|
|||
|
VerSetConditionMask(
|
|||
|
VerSetConditionMask(
|
|||
|
0, VER_MAJORVERSION, VER_GREATER_EQUAL),
|
|||
|
VER_MINORVERSION, VER_GREATER_EQUAL),
|
|||
|
VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
|
|||
|
|
|||
|
osvi.dwMajorVersion = wMajorVersion;
|
|||
|
osvi.dwMinorVersion = wMinorVersion;
|
|||
|
osvi.wServicePackMajor = wServicePackMajor;
|
|||
|
|
|||
|
return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsXPOrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 0);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsXPSP1OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 1);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsXPSP2OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 2);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsXPSP3OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP), LOBYTE(_WIN32_WINNT_WINXP), 3);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsVistaOrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsVistaSP1OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 1);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsVistaSP2OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 2);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindows7OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 0);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindows7SP1OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 1);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindows8OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8), LOBYTE(_WIN32_WINNT_WIN8), 0);
|
|||
|
}
|
|||
|
|
|||
|
// win8<6E><38><EFBFBD>ϵ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>manifest<73>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>supportedOS<4F><53>ǩָ<C7A9><D6B8>֧<EFBFBD><D6A7>win8.1<EFBFBD><EFBFBD>win10<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>win8ϵͳ
|
|||
|
VERSIONHELPERAPI IsWindows8Point1OrGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINBLUE), LOBYTE(_WIN32_WINNT_WINBLUE), 0);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindows1OorGreater()
|
|||
|
{
|
|||
|
return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN10), LOBYTE(_WIN32_WINNT_WIN10), 0);
|
|||
|
}
|
|||
|
|
|||
|
VERSIONHELPERAPI IsWindowsServer()
|
|||
|
{
|
|||
|
OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0, 0, VER_NT_WORKSTATION };
|
|||
|
DWORDLONG const dwlConditionMask = VerSetConditionMask( 0, VER_PRODUCT_TYPE, VER_EQUAL );
|
|||
|
|
|||
|
return !VerifyVersionInfoW(&osvi, VER_PRODUCT_TYPE, dwlConditionMask);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
#endif // UI_VERSION_HELPERS_H_
|