This commit breaks 2nd stage setup. It fails just before device enumeration with the message: "CMP_WaitNoPendingInstallEvents() failed". The official buildbot also exhibits this bug.
Thanks, Cameron Gutman On Oct 30, 2010, at 3:25 PM, [email protected] wrote: > Author: ekohl > Date: Sat Oct 30 19:25:23 2010 > New Revision: 49366 > > URL: http://svn.reactos.org/svn/reactos?rev=49366&view=rev > Log: > Merge ScmControlService() and ScmSendStartCommand() into > ScmSendServiceCommand(). > > Modified: > trunk/reactos/base/system/services/database.c > trunk/reactos/base/system/services/rpcserver.c > trunk/reactos/base/system/services/services.h > > Modified: trunk/reactos/base/system/services/database.c > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/database.c?rev=49366&r1=49365&r2=49366&view=diff > ============================================================================== > --- trunk/reactos/base/system/services/database.c [iso-8859-1] (original) > +++ trunk/reactos/base/system/services/database.c [iso-8859-1] Sat Oct 30 > 19:25:23 2010 > @@ -678,66 +678,10 @@ > > > DWORD > -ScmControlService(PSERVICE Service, > - DWORD dwControl) > -{ > - PSCM_CONTROL_PACKET ControlPacket; > - SCM_REPLY_PACKET ReplyPacket; > - > - DWORD dwWriteCount = 0; > - DWORD dwReadCount = 0; > - DWORD TotalLength; > - DWORD dwError = ERROR_SUCCESS; > - > - DPRINT("ScmControlService() called\n"); > - > - TotalLength = wcslen(Service->lpServiceName) + 1; > - > - ControlPacket = (SCM_CONTROL_PACKET*)HeapAlloc(GetProcessHeap(), > - HEAP_ZERO_MEMORY, > - > sizeof(SCM_CONTROL_PACKET) + (TotalLength * sizeof(WCHAR))); > - if (ControlPacket == NULL) > - return ERROR_NOT_ENOUGH_MEMORY; > - > - ControlPacket->dwControl = dwControl; > - ControlPacket->dwSize = TotalLength; > - ControlPacket->hServiceStatus = (SERVICE_STATUS_HANDLE)Service; > - wcscpy(&ControlPacket->szArguments[0], Service->lpServiceName); > - > - /* Send the control packet */ > - WriteFile(Service->ControlPipeHandle, > - ControlPacket, > - sizeof(SCM_CONTROL_PACKET) + (TotalLength * sizeof(WCHAR)), > - &dwWriteCount, > - NULL); > - > - /* Read the reply */ > - ReadFile(Service->ControlPipeHandle, > - &ReplyPacket, > - sizeof(SCM_REPLY_PACKET), > - &dwReadCount, > - NULL); > - > - /* Release the contol packet */ > - HeapFree(GetProcessHeap(), > - 0, > - ControlPacket); > - > - if (dwReadCount == sizeof(SCM_REPLY_PACKET)) > - { > - dwError = ReplyPacket.dwError; > - } > - > - DPRINT("ScmControlService() done\n"); > - > - return dwError; > -} > - > - > -static DWORD > -ScmSendStartCommand(PSERVICE Service, > - DWORD argc, > - LPWSTR *argv) > +ScmSendServiceCommand(PSERVICE Service, > + DWORD dwControl, > + DWORD argc, > + LPWSTR *argv) > { > PSCM_CONTROL_PACKET ControlPacket; > SCM_REPLY_PACKET ReplyPacket; > @@ -750,7 +694,7 @@ > DWORD dwError = ERROR_SUCCESS; > DWORD i; > > - DPRINT("ScmSendStartCommand() called\n"); > + DPRINT("ScmSendServiceCommand() called\n"); > > /* Calculate the total length of the start command line */ > TotalLength = wcslen(Service->lpServiceName) + 1; > @@ -774,7 +718,7 @@ > if (ControlPacket == NULL) > return ERROR_NOT_ENOUGH_MEMORY; > > - ControlPacket->dwControl = SERVICE_CONTROL_START; > + ControlPacket->dwControl = dwControl; > ControlPacket->hServiceStatus = (SERVICE_STATUS_HANDLE)Service; > ControlPacket->dwSize = TotalLength; > Ptr = &ControlPacket->szArguments[0]; > @@ -819,7 +763,7 @@ > dwError = ReplyPacket.dwError; > } > > - DPRINT("ScmSendStartCommand() done\n"); > + DPRINT("ScmSendServiceCommand() done\n"); > > return dwError; > } > @@ -998,7 +942,10 @@ > DPRINT("Received service process ID %lu\n", dwProcessId); > > /* Send start command */ > - dwError = ScmSendStartCommand(Service, argc, argv); > + dwError = ScmSendServiceCommand(Service, > + SERVICE_CONTROL_START, > + argc, > + argv); > } > } > else > @@ -1227,7 +1174,10 @@ > CurrentService->Status.dwCurrentState == SERVICE_START_PENDING) > { > /* shutdown service */ > - ScmControlService(CurrentService, SERVICE_CONTROL_STOP); > + ScmSendServiceCommand(CurrentService, > + SERVICE_CONTROL_STOP, > + 0, > + NULL); > } > > ServiceEntry = ServiceEntry->Flink; > > Modified: trunk/reactos/base/system/services/rpcserver.c > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/rpcserver.c?rev=49366&r1=49365&r2=49366&view=diff > ============================================================================== > --- trunk/reactos/base/system/services/rpcserver.c [iso-8859-1] (original) > +++ trunk/reactos/base/system/services/rpcserver.c [iso-8859-1] Sat Oct 30 > 19:25:23 2010 > @@ -699,8 +699,10 @@ > } > > /* Send control code to the service */ > - dwError = ScmControlService(lpService, > - dwControl); > + dwError = ScmSendServiceCommand(lpService, > + dwControl, > + 0, > + NULL); > > /* Return service status information */ > RtlCopyMemory(lpServiceStatus, > @@ -2864,7 +2866,10 @@ > } > > /* Start the service */ > - dwError = ScmStartService(lpService, argc, (LPWSTR *)argv); > + dwError = ScmSendServiceCommand(lpService, > + SERVICE_CONTROL_START, > + argc, > + (LPWSTR *)argv); > > return dwError; > } > @@ -4072,7 +4077,10 @@ > /* FIXME: Convert argument vector to Unicode */ > > /* Start the service */ > - dwError = ScmStartService(lpService, 0, NULL); > + dwError = ScmSendServiceCommand(lpService, > + SERVICE_CONTROL_START, > + 0, > + NULL); > > /* FIXME: Free argument vector */ > > > Modified: trunk/reactos/base/system/services/services.h > URL: > http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/services.h?rev=49366&r1=49365&r2=49366&view=diff > ============================================================================== > --- trunk/reactos/base/system/services/services.h [iso-8859-1] (original) > +++ trunk/reactos/base/system/services/services.h [iso-8859-1] Sat Oct 30 > 19:25:23 2010 > @@ -104,9 +104,10 @@ > VOID ScmGetBootAndSystemDriverState(VOID); > VOID ScmAutoStartServices(VOID); > VOID ScmAutoShutdownServices(VOID); > -DWORD ScmStartService(PSERVICE Service, > - DWORD argc, > - LPWSTR *argv); > +DWORD ScmSendServiceCommand(PSERVICE Service, > + DWORD dwControl, > + DWORD argc, > + LPWSTR *argv); > > PSERVICE ScmGetServiceEntryByName(LPCWSTR lpServiceName); > PSERVICE ScmGetServiceEntryByDisplayName(LPCWSTR lpDisplayName); > @@ -115,9 +116,6 @@ > PSERVICE *lpServiceRecord); > VOID ScmDeleteServiceRecord(PSERVICE lpService); > DWORD ScmMarkServiceForDelete(PSERVICE pService); > - > -DWORD ScmControlService(PSERVICE Service, > - DWORD dwControl); > > BOOL ScmLockDatabaseExclusive(VOID); > BOOL ScmLockDatabaseShared(VOID); > >
_______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
