[ros-diffs] [gedmurphy] 27695: Wait for the SCM to be fully initialized before calling allowing a call to OpenSCManager
gedmurphy at svn.reactos.org
gedmurphy at svn.reactos.org
Mon Jul 16 18:00:37 CEST 2007
Author: gedmurphy
Date: Mon Jul 16 20:00:37 2007
New Revision: 27695
URL: http://svn.reactos.org/svn/reactos?rev=27695&view=rev
Log:
Wait for the SCM to be fully initialized before calling allowing a call to OpenSCManager
Modified:
trunk/reactos/base/system/services/rpcserver.c
trunk/reactos/base/system/services/services.c
trunk/reactos/base/system/services/services.h
Modified: trunk/reactos/base/system/services/rpcserver.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/rpcserver.c?rev=27695&r1=27694&r2=27695&view=diff
==============================================================================
--- trunk/reactos/base/system/services/rpcserver.c (original)
+++ trunk/reactos/base/system/services/rpcserver.c Mon Jul 16 20:00:37 2007
@@ -1511,6 +1511,9 @@
if (ScmShutdown)
return ERROR_SHUTDOWN_IN_PROGRESS;
+ if (!ScmWaitForEvent())
+ return ERROR_ACCESS_DENIED;
+
dwError = ScmCreateManagerHandle(lpDatabaseName,
&hHandle);
if (dwError != ERROR_SUCCESS)
Modified: trunk/reactos/base/system/services/services.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/services.c?rev=27695&r1=27694&r2=27695&view=diff
==============================================================================
--- trunk/reactos/base/system/services/services.c (original)
+++ trunk/reactos/base/system/services/services.c Mon Jul 16 20:00:37 2007
@@ -91,6 +91,27 @@
*StartEvent = hEvent;
return TRUE;
+}
+
+
+BOOL ScmWaitForEvent()
+{
+ HANDLE hEvent;
+
+ hEvent = OpenEvent(EVENT_ALL_ACCESS,
+ FALSE,
+ TEXT("SvcctrlStartEvent_A3752DX"));
+
+ if (hEvent)
+ {
+ DWORD ret = WaitForSingleObject(hEvent,
+ INFINITE);
+
+ if (ret == WAIT_OBJECT_0)
+ return TRUE;
+ }
+
+ return FALSE;
}
Modified: trunk/reactos/base/system/services/services.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/services.h?rev=27695&r1=27694&r2=27695&view=diff
==============================================================================
--- trunk/reactos/base/system/services/services.h (original)
+++ trunk/reactos/base/system/services/services.h Mon Jul 16 20:00:37 2007
@@ -134,6 +134,7 @@
/* services.c */
+BOOL ScmWaitForEvent();
VOID PrintString(LPCSTR fmt, ...);
/* EOF */
More information about the Ros-diffs
mailing list