Author: ekohl
Date: Tue Aug 2 20:37:48 2011
New Revision: 53036
URL:
http://svn.reactos.org/svn/reactos?rev=53036&view=rev
Log:
[SERVICES]
- If a service will be started and another service is already running in the same image,
send a start command instead of starting the process again.
This enables us to run multiple services within a single process, like svchost.exe.
Modified:
trunk/reactos/base/system/services/database.c
Modified: trunk/reactos/base/system/services/database.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/datab…
==============================================================================
--- trunk/reactos/base/system/services/database.c [iso-8859-1] (original)
+++ trunk/reactos/base/system/services/database.c [iso-8859-1] Tue Aug 2 20:37:48 2011
@@ -217,6 +217,8 @@
/* Increment the run counter */
pServiceImage->dwImageRunCount++;
}
+
+ DPRINT("pServiceImage->dwImageRunCount: %lu\n",
pServiceImage->dwImageRunCount);
/* Link the service image to the service */
pService->lpImage = pServiceImage;
@@ -1080,6 +1082,13 @@
DWORD dwProcessId;
DPRINT("ScmStartUserModeService(%p)\n", Service);
+
+ /* If the image is already running ... */
+ if (Service->lpImage->dwImageRunCount > 1)
+ {
+ /* ... just send a start command */
+ return ScmSendStartCommand(Service, argc, argv);
+ }
StartupInfo.cb = sizeof(StartupInfo);
StartupInfo.lpReserved = NULL;