From d2aeaba5f8ecfa82c527cee3597fdd9ca64d9f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 23 Oct 2022 18:02:38 +0200 Subject: [PATCH] [CSR][NTDLL] Move the CSR subsystem into its own "csr" sub-directory. (#4802) Move CSRSS, CSRSRV there, as well as CSR client calls from NTDLL into a "CSRLIB" library. --- dll/ntdll/CMakeLists.txt | 5 +--- dll/ntdll/include/ntdll.h | 3 -- sdk/include/reactos/subsys/csr/csrsrv.h | 2 +- subsystems/CMakeLists.txt | 2 +- subsystems/{win32 => csr}/CMakeLists.txt | 1 + subsystems/csr/csrlib/CMakeLists.txt | 13 +++++++++ .../ntdll/csr => subsystems/csr/csrlib}/api.c | 19 ++++++------ .../csr => subsystems/csr/csrlib}/capture.c | 17 ++++------- .../csr => subsystems/csr/csrlib}/connect.c | 26 ++++++++++------- subsystems/csr/csrlib/csrdll.spec | 17 +++++++++++ subsystems/csr/csrlib/csrlib.h | 29 +++++++++++++++++++ .../{win32 => csr}/csrsrv/CMakeLists.txt | 3 +- subsystems/{win32 => csr}/csrsrv/api.c | 0 subsystems/{win32 => csr}/csrsrv/api.h | 0 subsystems/{win32 => csr}/csrsrv/csrsrv.rc | 0 subsystems/{win32 => csr}/csrsrv/csrsrv.spec | 0 subsystems/{win32 => csr}/csrsrv/init.c | 0 subsystems/{win32 => csr}/csrsrv/procsup.c | 0 subsystems/{win32 => csr}/csrsrv/server.c | 0 subsystems/{win32 => csr}/csrsrv/session.c | 0 subsystems/{win32 => csr}/csrsrv/srv.h | 0 subsystems/{win32 => csr}/csrsrv/status.h | 0 subsystems/{win32 => csr}/csrsrv/thredsup.c | 0 subsystems/{win32 => csr}/csrsrv/wait.c | 0 .../{win32 => csr}/csrss/CMakeLists.txt | 0 subsystems/{win32 => csr}/csrss/csrss.c | 0 subsystems/{win32 => csr}/csrss/csrss.rc | 0 27 files changed, 94 insertions(+), 43 deletions(-) rename subsystems/{win32 => csr}/CMakeLists.txt (66%) create mode 100644 subsystems/csr/csrlib/CMakeLists.txt rename {dll/ntdll/csr => subsystems/csr/csrlib}/api.c (83%) rename {dll/ntdll/csr => subsystems/csr/csrlib}/capture.c (95%) rename {dll/ntdll/csr => subsystems/csr/csrlib}/connect.c (96%) create mode 100644 subsystems/csr/csrlib/csrdll.spec create mode 100644 subsystems/csr/csrlib/csrlib.h rename subsystems/{win32 => csr}/csrsrv/CMakeLists.txt (81%) rename subsystems/{win32 => csr}/csrsrv/api.c (100%) rename subsystems/{win32 => csr}/csrsrv/api.h (100%) rename subsystems/{win32 => csr}/csrsrv/csrsrv.rc (100%) rename subsystems/{win32 => csr}/csrsrv/csrsrv.spec (100%) rename subsystems/{win32 => csr}/csrsrv/init.c (100%) rename subsystems/{win32 => csr}/csrsrv/procsup.c (100%) rename subsystems/{win32 => csr}/csrsrv/server.c (100%) rename subsystems/{win32 => csr}/csrsrv/session.c (100%) rename subsystems/{win32 => csr}/csrsrv/srv.h (100%) rename subsystems/{win32 => csr}/csrsrv/status.h (100%) rename subsystems/{win32 => csr}/csrsrv/thredsup.c (100%) rename subsystems/{win32 => csr}/csrsrv/wait.c (100%) rename subsystems/{win32 => csr}/csrss/CMakeLists.txt (100%) rename subsystems/{win32 => csr}/csrss/csrss.c (100%) rename subsystems/{win32 => csr}/csrss/csrss.rc (100%) diff --git a/dll/ntdll/CMakeLists.txt b/dll/ntdll/CMakeLists.txt index fbcd5272eb1..6d383bd6df4 100644 --- a/dll/ntdll/CMakeLists.txt +++ b/dll/ntdll/CMakeLists.txt @@ -18,9 +18,6 @@ include_directories( ${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys) list(APPEND SOURCE - csr/api.c - csr/capture.c - csr/connect.c dbg/dbgui.c ldr/ldrapi.c ldr/ldrinit.c @@ -60,7 +57,7 @@ set_module_type(ntdll win32dll ENTRYPOINT 0) set_subsystem(ntdll console) ################# END HACK ################# -target_link_libraries(ntdll rtl rtl_vista ntdllsys libcntpr uuid ${PSEH_LIB}) +target_link_libraries(ntdll csrlib rtl rtl_vista ntdllsys libcntpr uuid ${PSEH_LIB}) if (STACK_PROTECTOR) target_sources(ntdll PRIVATE $) diff --git a/dll/ntdll/include/ntdll.h b/dll/ntdll/include/ntdll.h index 61b656feb27..007d5f42f55 100644 --- a/dll/ntdll/include/ntdll.h +++ b/dll/ntdll/include/ntdll.h @@ -43,9 +43,6 @@ /* Internal NTDLL */ #include "ntdllp.h" -/* CSRSS Headers */ -#include - /* PSEH */ #include diff --git a/sdk/include/reactos/subsys/csr/csrsrv.h b/sdk/include/reactos/subsys/csr/csrsrv.h index 39fc5adfd2e..4f63c9bd152 100644 --- a/sdk/include/reactos/subsys/csr/csrsrv.h +++ b/sdk/include/reactos/subsys/csr/csrsrv.h @@ -23,7 +23,7 @@ /* TYPES **********************************************************************/ -// Used in ntdll/csr/connect.c +// Used in csr/connect.c #define CSR_CSRSS_SECTION_SIZE 65536 typedef struct _CSR_NT_SESSION diff --git a/subsystems/CMakeLists.txt b/subsystems/CMakeLists.txt index d77ca2fc6d4..ee58a57c40b 100644 --- a/subsystems/CMakeLists.txt +++ b/subsystems/CMakeLists.txt @@ -1,4 +1,4 @@ +add_subdirectory(csr) add_subdirectory(mvdm) add_subdirectory(win) -add_subdirectory(win32) diff --git a/subsystems/win32/CMakeLists.txt b/subsystems/csr/CMakeLists.txt similarity index 66% rename from subsystems/win32/CMakeLists.txt rename to subsystems/csr/CMakeLists.txt index 59bf8c3511c..487c1293343 100644 --- a/subsystems/win32/CMakeLists.txt +++ b/subsystems/csr/CMakeLists.txt @@ -1,3 +1,4 @@ +add_subdirectory(csrlib) add_subdirectory(csrsrv) add_subdirectory(csrss) diff --git a/subsystems/csr/csrlib/CMakeLists.txt b/subsystems/csr/csrlib/CMakeLists.txt new file mode 100644 index 00000000000..7e8be938676 --- /dev/null +++ b/subsystems/csr/csrlib/CMakeLists.txt @@ -0,0 +1,13 @@ + +add_definitions(-D_NTSYSTEM_) + +include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys/csr) + +list(APPEND SOURCE + api.c + capture.c + connect.c) + +add_library(csrlib ${SOURCE}) +add_pch(csrlib csrlib.h SOURCE) +add_dependencies(csrlib psdk) diff --git a/dll/ntdll/csr/api.c b/subsystems/csr/csrlib/api.c similarity index 83% rename from dll/ntdll/csr/api.c rename to subsystems/csr/csrlib/api.c index b0ddf0478a7..b1611d1f34f 100644 --- a/dll/ntdll/csr/api.c +++ b/subsystems/csr/csrlib/api.c @@ -1,22 +1,21 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: dll/ntdll/csr/api.c - * PURPOSE: CSR APIs exported through NTDLL - * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * PROJECT: ReactOS Client/Server Runtime SubSystem + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: CSR Client Library - API LPC Implementation + * COPYRIGHT: Copyright 2005-2012 Alex Ionescu + * Copyright 2012-2022 Hermès Bélusca-Maïto */ /* INCLUDES *******************************************************************/ -#include +#include "csrlib.h" + +#define NTOS_MODE_USER +#include #define NDEBUG #include -/* GLOBALS ********************************************************************/ - -extern HANDLE CsrApiPort; - /* FUNCTIONS ******************************************************************/ /* diff --git a/dll/ntdll/csr/capture.c b/subsystems/csr/csrlib/capture.c similarity index 95% rename from dll/ntdll/csr/capture.c rename to subsystems/csr/csrlib/capture.c index 9252a521f0a..c5b6b10cb59 100644 --- a/dll/ntdll/csr/capture.c +++ b/subsystems/csr/csrlib/capture.c @@ -1,23 +1,18 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: dll/ntdll/csr/capture.c - * PURPOSE: Routines for probing and capturing CSR API Messages - * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) - * Hermes Belusca-Maito (hermes.belusca@sfr.fr) + * PROJECT: ReactOS Client/Server Runtime SubSystem + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: CSR Client Library - CSR API Messages probing and capturing + * COPYRIGHT: Copyright 2005 Alex Ionescu + * Copyright 2012-2022 Hermès Bélusca-Maïto */ /* INCLUDES *******************************************************************/ -#include +#include "csrlib.h" #define NDEBUG #include -/* GLOBALS ********************************************************************/ - -extern HANDLE CsrPortHeap; - /* FUNCTIONS ******************************************************************/ /* diff --git a/dll/ntdll/csr/connect.c b/subsystems/csr/csrlib/connect.c similarity index 96% rename from dll/ntdll/csr/connect.c rename to subsystems/csr/csrlib/connect.c index 98033274e44..51d7c006f75 100644 --- a/dll/ntdll/csr/connect.c +++ b/subsystems/csr/csrlib/connect.c @@ -1,17 +1,23 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: dll/ntdll/csr/connect.c - * PURPOSE: Routines for connecting and calling CSR - * PROGRAMMER: Alex Ionescu (alex@relsoft.net) + * PROJECT: ReactOS Client/Server Runtime SubSystem + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: CSR Client Library - CSR connection and calling + * COPYRIGHT: Copyright 2005-2013 Alex Ionescu + * Copyright 2012-2022 Hermès Bélusca-Maïto */ /* INCLUDES *******************************************************************/ -#include +#include "csrlib.h" +#define NTOS_MODE_USER +#include #include -#include +#include +#include +#include + +#include // For CSR_CSRSS_SECTION_SIZE #define NDEBUG #include @@ -30,8 +36,6 @@ typedef NTSTATUS PCSR_SERVER_API_ROUTINE CsrServerApiRoutine; -#define UNICODE_PATH_SEP L"\\" - /* FUNCTIONS ******************************************************************/ NTSTATUS @@ -80,8 +84,8 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory) } /* Create the name */ - RtlAppendUnicodeToString(&PortName, ObjectDirectory ); - RtlAppendUnicodeToString(&PortName, UNICODE_PATH_SEP); + RtlAppendUnicodeToString(&PortName, ObjectDirectory); + RtlAppendUnicodeToString(&PortName, L"\\"); RtlAppendUnicodeToString(&PortName, CSR_PORT_NAME); /* Create a section for the port memory */ diff --git a/subsystems/csr/csrlib/csrdll.spec b/subsystems/csr/csrlib/csrdll.spec new file mode 100644 index 00000000000..5d170a92a81 --- /dev/null +++ b/subsystems/csr/csrlib/csrdll.spec @@ -0,0 +1,17 @@ +@ stdcall CsrAllocateCaptureBuffer(long long) +@ stdcall CsrAllocateMessagePointer(ptr long ptr) +@ stdcall CsrCaptureMessageBuffer(ptr ptr long ptr) +@ stdcall CsrCaptureMessageMultiUnicodeStringsInPlace(ptr long ptr) +@ stdcall CsrCaptureMessageString(ptr str long long ptr) +@ stdcall CsrCaptureTimeout(long ptr) +@ stdcall CsrClientCallServer(ptr ptr long long) +@ stdcall CsrClientConnectToServer(str long ptr ptr ptr) +@ stdcall CsrFreeCaptureBuffer(ptr) +@ stdcall CsrGetProcessId() +@ stdcall CsrIdentifyAlertableThread() +@ stdcall -version=0x502 CsrNewThread() +@ stdcall -version=0x502 CsrProbeForRead(ptr long long) +@ stdcall -version=0x502 CsrProbeForWrite(ptr long long) +@ stdcall CsrSetPriorityClass(ptr ptr) +@ stdcall -stub -version=0x600+ CsrVerifyRegion(ptr long) +@ stdcall -stub -version=0x600+ RtlRegisterThreadWithCsrss() diff --git a/subsystems/csr/csrlib/csrlib.h b/subsystems/csr/csrlib/csrlib.h new file mode 100644 index 00000000000..ed65a07d192 --- /dev/null +++ b/subsystems/csr/csrlib/csrlib.h @@ -0,0 +1,29 @@ +/* + * PROJECT: ReactOS Client/Server Runtime SubSystem + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: CSR Client Library - Main Header + * COPYRIGHT: Copyright 2022 Hermès Bélusca-Maïto + */ + +#ifndef _CSRLIB_H_ +#define _CSRLIB_H_ + +/* INCLUDES ******************************************************************/ + +/* PSDK/NDK Headers */ +#define WIN32_NO_STATUS +//#include +#define NTOS_MODE_USER +#include + +/* CSRSS Headers */ +#include + +/* GLOBALS ********************************************************************/ + +extern HANDLE CsrApiPort; +extern HANDLE CsrPortHeap; + +#endif /* _CSRLIB_H_ */ + +/* EOF */ diff --git a/subsystems/win32/csrsrv/CMakeLists.txt b/subsystems/csr/csrsrv/CMakeLists.txt similarity index 81% rename from subsystems/win32/csrsrv/CMakeLists.txt rename to subsystems/csr/csrsrv/CMakeLists.txt index 3ee512e5dd9..72fe79b9083 100644 --- a/subsystems/win32/csrsrv/CMakeLists.txt +++ b/subsystems/csr/csrsrv/CMakeLists.txt @@ -1,5 +1,4 @@ -include_directories(${REACTOS_SOURCE_DIR}/subsystems/win32/csrss/include) include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys) spec2def(csrsrv.dll csrsrv.spec ADD_IMPORTLIB) @@ -20,7 +19,7 @@ add_library(csrsrv MODULE ${CMAKE_CURRENT_BINARY_DIR}/csrsrv.def) set_module_type(csrsrv nativedll) -target_link_libraries(csrsrv ${PSEH_LIB} smlib) +target_link_libraries(csrsrv smlib ${PSEH_LIB}) add_importlibs(csrsrv ntdll) add_pch(csrsrv srv.h SOURCE) add_dependencies(csrsrv psdk bugcodes) diff --git a/subsystems/win32/csrsrv/api.c b/subsystems/csr/csrsrv/api.c similarity index 100% rename from subsystems/win32/csrsrv/api.c rename to subsystems/csr/csrsrv/api.c diff --git a/subsystems/win32/csrsrv/api.h b/subsystems/csr/csrsrv/api.h similarity index 100% rename from subsystems/win32/csrsrv/api.h rename to subsystems/csr/csrsrv/api.h diff --git a/subsystems/win32/csrsrv/csrsrv.rc b/subsystems/csr/csrsrv/csrsrv.rc similarity index 100% rename from subsystems/win32/csrsrv/csrsrv.rc rename to subsystems/csr/csrsrv/csrsrv.rc diff --git a/subsystems/win32/csrsrv/csrsrv.spec b/subsystems/csr/csrsrv/csrsrv.spec similarity index 100% rename from subsystems/win32/csrsrv/csrsrv.spec rename to subsystems/csr/csrsrv/csrsrv.spec diff --git a/subsystems/win32/csrsrv/init.c b/subsystems/csr/csrsrv/init.c similarity index 100% rename from subsystems/win32/csrsrv/init.c rename to subsystems/csr/csrsrv/init.c diff --git a/subsystems/win32/csrsrv/procsup.c b/subsystems/csr/csrsrv/procsup.c similarity index 100% rename from subsystems/win32/csrsrv/procsup.c rename to subsystems/csr/csrsrv/procsup.c diff --git a/subsystems/win32/csrsrv/server.c b/subsystems/csr/csrsrv/server.c similarity index 100% rename from subsystems/win32/csrsrv/server.c rename to subsystems/csr/csrsrv/server.c diff --git a/subsystems/win32/csrsrv/session.c b/subsystems/csr/csrsrv/session.c similarity index 100% rename from subsystems/win32/csrsrv/session.c rename to subsystems/csr/csrsrv/session.c diff --git a/subsystems/win32/csrsrv/srv.h b/subsystems/csr/csrsrv/srv.h similarity index 100% rename from subsystems/win32/csrsrv/srv.h rename to subsystems/csr/csrsrv/srv.h diff --git a/subsystems/win32/csrsrv/status.h b/subsystems/csr/csrsrv/status.h similarity index 100% rename from subsystems/win32/csrsrv/status.h rename to subsystems/csr/csrsrv/status.h diff --git a/subsystems/win32/csrsrv/thredsup.c b/subsystems/csr/csrsrv/thredsup.c similarity index 100% rename from subsystems/win32/csrsrv/thredsup.c rename to subsystems/csr/csrsrv/thredsup.c diff --git a/subsystems/win32/csrsrv/wait.c b/subsystems/csr/csrsrv/wait.c similarity index 100% rename from subsystems/win32/csrsrv/wait.c rename to subsystems/csr/csrsrv/wait.c diff --git a/subsystems/win32/csrss/CMakeLists.txt b/subsystems/csr/csrss/CMakeLists.txt similarity index 100% rename from subsystems/win32/csrss/CMakeLists.txt rename to subsystems/csr/csrss/CMakeLists.txt diff --git a/subsystems/win32/csrss/csrss.c b/subsystems/csr/csrss/csrss.c similarity index 100% rename from subsystems/win32/csrss/csrss.c rename to subsystems/csr/csrss/csrss.c diff --git a/subsystems/win32/csrss/csrss.rc b/subsystems/csr/csrss/csrss.rc similarity index 100% rename from subsystems/win32/csrss/csrss.rc rename to subsystems/csr/csrss/csrss.rc