diff --git a/base/setup/lib/CMakeLists.txt b/base/setup/lib/CMakeLists.txt index eb8ef7925a8..1903f104cce 100644 --- a/base/setup/lib/CMakeLists.txt +++ b/base/setup/lib/CMakeLists.txt @@ -35,14 +35,18 @@ list(APPEND SOURCE setuplib.c precomp.h) +# Static library used for the dll and for setuplib_unittest. +add_library(setuplib_static ${SOURCE}) +add_pch(setuplib_static precomp.h SOURCE) +add_dependencies(setuplib_static xdk) # psdk + add_library(setuplib SHARED - ${SOURCE} + main.c setuplib.rc ${CMAKE_CURRENT_BINARY_DIR}/setuplib.def) +target_link_libraries(setuplib setuplib_static) -add_pch(setuplib precomp.h SOURCE) add_dependencies(setuplib xdk) # psdk - set_module_type(setuplib nativedll) target_link_libraries(setuplib ext2lib vfatlib btrfslib ${PSEH_LIB}) add_importlibs(setuplib ntdll) diff --git a/base/setup/lib/main.c b/base/setup/lib/main.c new file mode 100644 index 00000000000..935cf0bfd23 --- /dev/null +++ b/base/setup/lib/main.c @@ -0,0 +1,49 @@ +/* + * PROJECT: ReactOS Setup Library + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: DLL Main Routine + * COPYRIGHT: Copyright 2025 Hermès Bélusca-Maïto + */ + +/* INCLUDES ******************************************************************/ + +/* PSDK/NDK Headers */ +#define WIN32_NO_STATUS +#include +#include + +#define NTOS_MODE_USER +// #include +#include + +/* GLOBALS *******************************************************************/ + +extern HANDLE ProcessHeap; + +/* ENTRY-POINT ***************************************************************/ + +/* Declared in ndk/umfuncs.h */ +NTSTATUS +NTAPI +LdrDisableThreadCalloutsForDll( + _In_ PVOID BaseAddress); + +BOOL +NTAPI +DllMain( + _In_ HINSTANCE hDll, + _In_ ULONG dwReason, + _In_opt_ PVOID pReserved) +{ + UNREFERENCED_PARAMETER(pReserved); + + if (dwReason == DLL_PROCESS_ATTACH) + { + LdrDisableThreadCalloutsForDll(hDll); + ProcessHeap = RtlGetProcessHeap(); + } + + return TRUE; +} + +/* EOF */ diff --git a/base/setup/lib/setuplib.c b/base/setup/lib/setuplib.c index a4b80bd2a13..4e2b3fb4c39 100644 --- a/base/setup/lib/setuplib.c +++ b/base/setup/lib/setuplib.c @@ -1405,31 +1405,4 @@ Cleanup: return ErrorNumber; } - -/* ENTRY-POINT ***************************************************************/ - -/* Declared in ndk/umfuncs.h */ -NTSTATUS -NTAPI -LdrDisableThreadCalloutsForDll( - _In_ PVOID BaseAddress); - -BOOL -NTAPI -DllMain( - _In_ HINSTANCE hDll, - _In_ ULONG dwReason, - _In_opt_ PVOID pReserved) -{ - UNREFERENCED_PARAMETER(pReserved); - - if (dwReason == DLL_PROCESS_ATTACH) - { - LdrDisableThreadCalloutsForDll(hDll); - ProcessHeap = RtlGetProcessHeap(); - } - - return TRUE; -} - /* EOF */ diff --git a/modules/rostests/unittests/setuplib/CMakeLists.txt b/modules/rostests/unittests/setuplib/CMakeLists.txt index 8ac15930dad..b35ff4dcc91 100644 --- a/modules/rostests/unittests/setuplib/CMakeLists.txt +++ b/modules/rostests/unittests/setuplib/CMakeLists.txt @@ -11,7 +11,8 @@ list(APPEND SOURCE precomp.h) add_executable(setuplib_unittest ${SOURCE}) +target_link_libraries(setuplib_unittest setuplib_static ${PSEH_LIB}) set_module_type(setuplib_unittest win32cui) -add_importlibs(setuplib_unittest setuplib msvcrt kernel32) +add_importlibs(setuplib_unittest msvcrt kernel32 ntdll) #add_pch(setuplib_unittest precomp.h SOURCE) add_rostests_file(TARGET setuplib_unittest)