From: Hermès Bélusca-Maïto Date: Tue, 18 Dec 2012 20:38:54 +0000 (+0000) Subject: [SERVICES] X-Git-Tag: backups/ros-csrss@60644~104^2~86 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=8e4c4014950da96548cc524719d523d4341c29ca;hp=3a6d338be34c2f87d3a6d330868872074e2c822d;ds=sidebyside [SERVICES] - services.exe is indeed a GUI program, so build it as such. - Check the return value of RegisterServicesProcess and thus allow only one instance of services.exe to be launched. CORE-6123 #resolve #comment Fixed by r57946. svn path=/trunk/; revision=57946 --- diff --git a/reactos/base/system/services/CMakeLists.txt b/reactos/base/system/services/CMakeLists.txt index 006f5c46400..66fefbc89e5 100644 --- a/reactos/base/system/services/CMakeLists.txt +++ b/reactos/base/system/services/CMakeLists.txt @@ -25,7 +25,7 @@ if(NOT MSVC) target_link_libraries(services ${PSEH_LIB}) endif() -set_module_type(services win32cui UNICODE) +set_module_type(services win32gui UNICODE) add_importlibs(services user32 advapi32 rpcrt4 msvcrt kernel32 ntdll) add_pch(services services.h ${CMAKE_CURRENT_BINARY_DIR}/svcctl_s.h) add_cd_file(TARGET services DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/system/services/services.c b/reactos/base/system/services/services.c index 982e0fbdeb3..1245fd373ed 100644 --- a/reactos/base/system/services/services.c +++ b/reactos/base/system/services/services.c @@ -8,10 +8,6 @@ * */ -/* NOTE: - * - Services.exe is NOT a native application, it is a GUI app. - */ - /* INCLUDES *****************************************************************/ #include "services.h" @@ -393,7 +389,7 @@ wWinMain(HINSTANCE hInstance, goto done; } - /* Create the service database */ + /* Create the services database */ dwError = ScmCreateServiceDatabase(); if (dwError != ERROR_SUCCESS) { @@ -401,11 +397,15 @@ wWinMain(HINSTANCE hInstance, goto done; } - /* Update service database */ + /* Update the services database */ ScmGetBootAndSystemDriverState(); - /* Register service process with CSRSS */ - RegisterServicesProcess(GetCurrentProcessId()); + /* Register the Service Control Manager process with CSRSS */ + if (!RegisterServicesProcess(GetCurrentProcessId())) + { + DPRINT1("SERVICES: Could not register SCM process\n"); + goto done; + } /* Acquire the service start lock until autostart services have been started */ dwError = ScmAcquireServiceStartLock(TRUE, &Lock);