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/databa... ============================================================================== --- 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/rpcser... ============================================================================== --- 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/servic... ============================================================================== --- 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);