1
0
Эх сурвалжийг харах

In BCB11 Win32BuildNumber works correctly even on Windows 10 and newer

Source commit: 142548c65265adb7bfb8b7949a1a27b4083754d2
Martin Prikryl 10 сар өмнө
parent
commit
921ac904a1

+ 3 - 25
source/core/Common.cpp

@@ -3025,26 +3025,10 @@ bool __fastcall IsWin10()
   return CheckWin32Version(10, 0);
 }
 //---------------------------------------------------------------------------
-static OSVERSIONINFO __fastcall GetWindowsVersion()
-{
-  OSVERSIONINFO Result;
-  memset(&Result, 0, sizeof(Result));
-  Result.dwOSVersionInfoSize = sizeof(Result);
-  // Cannot use the VCL Win32MajorVersion+Win32MinorVersion+Win32BuildNumber as
-  // on Windows 10 due to some hacking in InitPlatformId, the Win32BuildNumber is lost
-  GetVersionEx(&Result);
-  return Result;
-}
-//---------------------------------------------------------------------------
-bool __fastcall IsWin10Build(unsigned int BuildNumber)
+bool IsWin10Build(int BuildNumber)
 {
   // It might be enough to check the dwBuildNumber, as we do in TWinConfiguration::IsDDExtBroken()
-  OSVERSIONINFO OSVersionInfo = GetWindowsVersion();
-  return
-    (OSVersionInfo.dwMajorVersion > 10) ||
-    ((OSVersionInfo.dwMajorVersion == 10) && (OSVersionInfo.dwMinorVersion > 0)) ||
-    ((OSVersionInfo.dwMajorVersion == 10) && (OSVersionInfo.dwMinorVersion == 0) &&
-     (OSVersionInfo.dwBuildNumber >= BuildNumber));
+  return IsWin10() && (Win32BuildNumber() >= BuildNumber);
 }
 //---------------------------------------------------------------------------
 bool IsWin11()
@@ -3178,15 +3162,9 @@ UnicodeString __fastcall WindowsProductName()
   return Result;
 }
 //---------------------------------------------------------------------------
-int __fastcall GetWindowsBuild()
-{
-  return GetWindowsVersion().dwBuildNumber;
-}
-//---------------------------------------------------------------------------
 UnicodeString __fastcall WindowsVersion()
 {
-  OSVERSIONINFO OSVersionInfo = GetWindowsVersion();
-  UnicodeString Result = FORMAT(L"%d.%d.%d", (int(OSVersionInfo.dwMajorVersion), int(OSVersionInfo.dwMinorVersion), int(OSVersionInfo.dwBuildNumber)));
+  UnicodeString Result = FORMAT(L"%d.%d.%d", (Win32MajorVersion(), Win32MinorVersion(), Win32BuildNumber()));
   return Result;
 }
 //---------------------------------------------------------------------------

+ 1 - 2
source/core/Common.h

@@ -148,7 +148,7 @@ void AddToShellFileListCommandLine(UnicodeString & List, const UnicodeString & V
 bool __fastcall IsWin7();
 bool __fastcall IsWin8();
 bool __fastcall IsWin10();
-bool __fastcall IsWin10Build(unsigned int BuildNumber);
+bool IsWin10Build(int BuildNumber);
 bool IsWin11();
 bool __fastcall IsWine();
 void EnableUWPTestMode();
@@ -165,7 +165,6 @@ LCID __fastcall GetDefaultLCID();
 UnicodeString __fastcall DefaultEncodingName();
 UnicodeString __fastcall WindowsProductName();
 bool _fastcall GetWindowsProductType(DWORD & Type);
-int __fastcall GetWindowsBuild();
 UnicodeString __fastcall WindowsVersion();
 UnicodeString __fastcall WindowsVersionLong();
 bool __fastcall IsDirectoryWriteable(const UnicodeString & Path);

+ 1 - 1
source/windows/WinConfiguration.cpp

@@ -1834,7 +1834,7 @@ bool __fastcall TWinConfiguration::IsDDExtRunning()
 //---------------------------------------------------------------------------
 bool __fastcall TWinConfiguration::IsDDExtBroken()
 {
-  int Build = GetWindowsBuild();
+  int Build = Win32BuildNumber();
   return (Build >= 17134) && (Build < 17763);
 }
 //---------------------------------------------------------------------------