[ros-diffs] [dgorbachev] 45628: [SERVICES] When autostart services are up, signal an event.

dgorbachev at svn.reactos.org dgorbachev at svn.reactos.org
Sat Feb 20 01:32:25 CET 2010


Author: dgorbachev
Date: Sat Feb 20 01:32:23 2010
New Revision: 45628

URL: http://svn.reactos.org/svn/reactos?rev=45628&view=rev
Log:
[SERVICES] When autostart services are up, signal an event.

Modified:
    branches/arwinss/reactos/base/system/services/services.c

Modified: branches/arwinss/reactos/base/system/services/services.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/base/system/services/services.c?rev=45628&r1=45627&r2=45628&view=diff
==============================================================================
--- branches/arwinss/reactos/base/system/services/services.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/base/system/services/services.c [iso-8859-1] Sat Feb 20 01:32:23 2010
@@ -48,35 +48,33 @@
 
 
 BOOL
-ScmCreateStartEvent(PHANDLE StartEvent)
+ScmCreateEvent(PHANDLE Event, LPCWSTR Name)
 {
     HANDLE hEvent;
 
-    hEvent = CreateEvent(NULL,
-                         TRUE,
-                         FALSE,
-                         TEXT("SvcctrlStartEvent_A3752DX"));
+    hEvent = CreateEventW(NULL,
+                          TRUE,
+                          FALSE,
+                          Name);
     if (hEvent == NULL)
     {
         if (GetLastError() == ERROR_ALREADY_EXISTS)
         {
-            hEvent = OpenEvent(EVENT_ALL_ACCESS,
-                               FALSE,
-                               TEXT("SvcctrlStartEvent_A3752DX"));
-            if (hEvent == NULL)
-            {
-                return FALSE;
-            }
-        }
-        else
-        {
-            return FALSE;
-        }
-    }
-
-    *StartEvent = hEvent;
-
-    return TRUE;
+            hEvent = OpenEventW(EVENT_ALL_ACCESS,
+                                FALSE,
+                                Name);
+        }
+    }
+
+    if (hEvent)
+    {
+        DPRINT("SERVICES: created event %S with handle %x\n", Name, hEvent);
+        *Event = hEvent;
+        return TRUE;
+    }
+
+    DPRINT1("SERVICES: Failed to create event %S\n", Name);
+    return FALSE;
 }
 
 
@@ -299,6 +297,7 @@
          int nShowCmd)
 {
     HANDLE hScmStartEvent;
+    HANDLE hScmAutoStartCompleteEvent;
     HANDLE hEvent;
     DWORD dwError;
 
@@ -307,14 +306,16 @@
     /* Acquire privileges to load drivers */
     AcquireLoadDriverPrivilege();
 
-    /* Create start event */
-    if (!ScmCreateStartEvent(&hScmStartEvent))
-    {
-        DPRINT1("SERVICES: Failed to create start event\n");
+    /* Create events */
+    if (!ScmCreateEvent(&hScmAutoStartCompleteEvent, L"SC_AutoStartComplete"))
+    {
         ExitThread(0);
     }
 
-    DPRINT("SERVICES: created start event with handle %x.\n", hScmStartEvent);
+    if (!ScmCreateEvent(&hScmStartEvent, L"SvcctrlStartEvent_A3752DX"))
+    {
+        ExitThread(0);
+    }
 
 //    ScmInitThreadManager();
 
@@ -353,6 +354,9 @@
 
 
     DPRINT("SERVICES: Running.\n");
+
+    /* Signal complete event */
+    SetEvent(hScmAutoStartCompleteEvent);
 
 #if 1
     hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);




More information about the Ros-diffs mailing list