From f8686087a07e4aa2357315ec1793e825b92d3dda Mon Sep 17 00:00:00 2001
From: chrfranke <chrfranke@4ea69e1a-61f1-4043-bf83-b5c94c648137>
Date: Sun, 31 Oct 2021 18:34:22 +0000
Subject: [PATCH] os_win32.cpp: Decode Windows 10, 11 and Server 2022 21H2
 build numbers.

git-svn-id: https://svn.code.sf.net/p/smartmontools/code/trunk@5239 4ea69e1a-61f1-4043-bf83-b5c94c648137
---
 smartmontools/ChangeLog    |  5 +++++
 smartmontools/os_win32.cpp | 15 +++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/smartmontools/ChangeLog b/smartmontools/ChangeLog
index c2f6ed9ba..a6724a953 100644
--- a/smartmontools/ChangeLog
+++ b/smartmontools/ChangeLog
@@ -1,5 +1,10 @@
 $Id$
 
+2021-10-31  Christian Franke  <franke@computer.org>
+
+	os_win32.cpp: Decode Windows 10, 11 and Server 2022 21H2 build
+	numbers.
+
 2021-10-23  Christian Franke  <franke@computer.org>
 
 	Don't pass possible command escapes to the 'mail' command (#1535).
diff --git a/smartmontools/os_win32.cpp b/smartmontools/os_win32.cpp
index 1ebc78c9d..8506347c1 100644
--- a/smartmontools/os_win32.cpp
+++ b/smartmontools/os_win32.cpp
@@ -4007,22 +4007,29 @@ std::string win_smart_interface::get_os_version_str()
           case 19041:   w = "w10-2004"; break;
           case 19042:   w = "w10-20H2"; break;
           case 19043:   w = "w10-21H1"; break;
-          default:      w = "w10";
+          case 19044:   w = "w10-21H2"; break;
+          case 22000:   w = "w11-21H2"; break;
+          default:      w = (vi.dwBuildNumber < 22000
+                          ? "w10"
+                          : "w11");
                         build = vi.dwBuildNumber; break;
         } break;
       case 0xa0<<1 | 1:
         switch (vi.dwBuildNumber) {
-          case 14393:   w = "2016";      break;
+          case 14393:   w = "2016-1607"; break;
           case 16299:   w = "2016-1709"; break;
           case 17134:   w = "2016-1803"; break;
-          case 17763:   w = "2019";      break;
+          case 17763:   w = "2019-1809"; break;
           case 18362:   w = "2019-1903"; break;
           case 18363:   w = "2019-1909"; break;
           case 19041:   w = "2019-2004"; break;
           case 19042:   w = "2019-20H2"; break;
+          case 20348:   w = "2022-21H2"; break;
           default:      w = (vi.dwBuildNumber < 17763
                           ? "2016"
-                          : "2019");
+                          :  vi.dwBuildNumber < 20348
+                          ? "2019"
+                          : "2022");
                         build = vi.dwBuildNumber; break;
         } break;
     }
-- 
GitLab