15 OSVERSIONINFOEX
result = {
sizeof(OSVERSIONINFOEX), 0, 0, 0, 0, {
'\0'}, 0, 0, 0, 0, 0};
17 HMODULE ntdll = GetModuleHandleW(L
"ntdll.dll");
21 typedef NTSTATUS (NTAPI *RtlGetVersionFunction)(LPOSVERSIONINFO);
26 RtlGetVersionFunction pRtlGetVersion =
reinterpret_cast<RtlGetVersionFunction
>(
27 reinterpret_cast<QFunctionPointer
>(GetProcAddress(ntdll,
"RtlGetVersion")));
33 pRtlGetVersion(
reinterpret_cast<LPOSVERSIONINFO
>(&
result));
43 OSVERSIONINFOEX
result = realResult;
49 result.szCSDVersion[0] = L
'\0';
50 result.wServicePackMajor = 0;
51 result.wServicePackMinor = 0;
54 if (winVerOverride ==
"WINDOWS10" || winVerOverride ==
"2016"
55 || winVerOverride ==
"2019" || winVerOverride ==
"2022") {
56 result.dwMajorVersion = 10;
57 }
else if (winVerOverride ==
"WINDOWS11") {
58 result.dwMajorVersion = 10;
59 result.dwBuildNumber = 22000;
64 if (winVerOverride ==
"2016" || winVerOverride ==
"2019"
65 || winVerOverride ==
"2022") {
68 if (
result.wProductType == VER_NT_WORKSTATION)
69 result.wProductType = VER_NT_SERVER;
72 result.wProductType = VER_NT_WORKSTATION;
85 v.m_major = osv.dwMajorVersion;
86 v.m_minor = osv.dwMinorVersion;
87 v.m_micro = osv.dwBuildNumber;
static constexpr OSType currentType()
Combined button and popup list for selecting options.
GLsizei const GLfloat * v
[13]
OSVERSIONINFOEX qWindowsVersionInfo()
static QT_BEGIN_NAMESPACE OSVERSIONINFOEX determineWinOsVersion()
Q_CORE_EXPORT QByteArray qgetenv(const char *varName)
Q_CORE_EXPORT bool qEnvironmentVariableIsSet(const char *varName) noexcept