From 289306752e8b69af9dd23432465896b866e4c9ff Mon Sep 17 00:00:00 2001 From: brian Date: Mon, 12 Jan 2026 10:34:32 +0800 Subject: [PATCH] Move get_system_dll_init_block_size to module_manager as free function --- .../module/module_manager.cpp | 26 ++++++++++++++++++- .../version/windows_version_manager.cpp | 21 --------------- .../version/windows_version_manager.hpp | 2 -- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/windows-emulator/module/module_manager.cpp b/src/windows-emulator/module/module_manager.cpp index b3c251f8..6bfcb15e 100644 --- a/src/windows-emulator/module/module_manager.cpp +++ b/src/windows-emulator/module/module_manager.cpp @@ -13,6 +13,30 @@ #include #include +namespace +{ + uint64_t get_system_dll_init_block_size(const windows_version_manager& version) + { + if (version.is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_11_24H2)) + { + return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V3; + } + if (version.is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_10_2004)) + { + return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V3_2004; + } + if (version.is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_10_1709)) + { + return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V2; + } + if (version.is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_10_1703)) + { + return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V2_1703; + } + return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V1; + } +} + namespace utils { static void serialize(buffer_serializer& buffer, const exported_symbol& sym) @@ -282,7 +306,7 @@ void module_manager::load_wow64_modules(const windows_path& executable_path, con } PS_SYSTEM_DLL_INIT_BLOCK init_block = {}; - const auto init_block_size = version.get_system_dll_init_block_size(); + const auto init_block_size = get_system_dll_init_block_size(version); init_block.Size = static_cast(init_block_size); diff --git a/src/windows-emulator/version/windows_version_manager.cpp b/src/windows-emulator/version/windows_version_manager.cpp index 928366f9..cc1c93f8 100644 --- a/src/windows-emulator/version/windows_version_manager.cpp +++ b/src/windows-emulator/version/windows_version_manager.cpp @@ -100,27 +100,6 @@ bool windows_version_manager::is_build_within(uint32_t start_build, uint32_t end return is_build_after_or_equal(start_build, start_ubr) && is_build_before(end_build, end_ubr); } -uint64_t windows_version_manager::get_system_dll_init_block_size() const -{ - if (is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_11_24H2)) - { - return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V3; - } - if (is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_10_2004)) - { - return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V3_2004; - } - if (is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_10_1709)) - { - return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V2; - } - if (is_build_after_or_equal(WINDOWS_VERSION::WINDOWS_10_1703)) - { - return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V2_1703; - } - return PS_SYSTEM_DLL_INIT_BLOCK_SIZE_V1; -} - void windows_version_manager::serialize(utils::buffer_serializer& buffer) const { buffer.write(info_.major_version); diff --git a/src/windows-emulator/version/windows_version_manager.hpp b/src/windows-emulator/version/windows_version_manager.hpp index 18f65bc3..9f2c6c5d 100644 --- a/src/windows-emulator/version/windows_version_manager.hpp +++ b/src/windows-emulator/version/windows_version_manager.hpp @@ -29,8 +29,6 @@ class windows_version_manager bool is_build_within(uint32_t start_build, uint32_t end_build, std::optional start_ubr = std::nullopt, std::optional end_ubr = std::nullopt) const; - uint64_t get_system_dll_init_block_size() const; - void serialize(utils::buffer_serializer& buffer) const; void deserialize(utils::buffer_deserializer& buffer);