Author: hbelusca
Date: Tue Dec 18 20:38:54 2012
New Revision: 57946
URL:
http://svn.reactos.org/svn/reactos?rev=57946&view=rev
Log:
[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.
Modified:
trunk/reactos/base/system/services/CMakeLists.txt
trunk/reactos/base/system/services/services.c
Modified: trunk/reactos/base/system/services/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/CMake…
==============================================================================
--- trunk/reactos/base/system/services/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/base/system/services/CMakeLists.txt [iso-8859-1] Tue Dec 18 20:38:54
2012
@@ -25,7 +25,7 @@
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)
Modified: trunk/reactos/base/system/services/services.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/servi…
==============================================================================
--- trunk/reactos/base/system/services/services.c [iso-8859-1] (original)
+++ trunk/reactos/base/system/services/services.c [iso-8859-1] Tue Dec 18 20:38:54 2012
@@ -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 @@
goto done;
}
- /* Create the service database */
+ /* Create the services database */
dwError = ScmCreateServiceDatabase();
if (dwError != ERROR_SUCCESS)
{
@@ -401,11 +397,15 @@
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);