From 24e0bd827a8bec8121b128b0634cb34402fb3259 Mon Sep 17 00:00:00 2001 From: Devon Loehr Date: Wed, 2 Oct 2024 04:40:03 -0400 Subject: [PATCH] Add enum value from newest Windows SDK (#1859) * Add enum value from newest Windows SDK Windows SDK version 10.0.26100.0 adds a cache type value, `CacheUnknown`. This adds a case for that type to `sysinfo.cc`, which will otherwise complain about the switch statement being non-exhaustive when building with the new SDK. Since the value doesn't exist in prior SDK versions, we only add the case conditionally. The condition can be removed if we ever decide to bump up the required SDK version. * Fix SDK version macro Make sure the version macro we're using for the SDK is properly indicative of version 10.0.26100.0. Also fix formatting complains from the linter. * Add space to satisfy formatter Formatter insists on two space before a comment after a macro... * Change preprocessor condition Try detecting the current SDK version in a slightly different way. * Replace NTDDI_WIN11_GE with its value Undefined constants are treated as 0 by the preprocessor, which causes the check to trivially return true for previous SDK versions. Replace the constant with its value (from the newest SDK version) instead, --- src/sysinfo.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sysinfo.cc b/src/sysinfo.cc index a153b20c..71485982 100644 --- a/src/sysinfo.cc +++ b/src/sysinfo.cc @@ -353,6 +353,12 @@ std::vector GetCacheSizesWindows() { C.size = static_cast(cache.Size); C.type = "Unknown"; switch (cache.Type) { +// Windows SDK version >= 10.0.26100.0 +// 0x0A000010 is the value of NTDDI_WIN11_GE +#if NTDDI_VERSION >= 0x0A000010 + case CacheUnknown: + break; +#endif case CacheUnified: C.type = "Unified"; break;