Author: ekohl
Date: Sat Oct 30 19:25:23 2010
New Revision: 49366
URL:
http://svn.reactos.org/svn/reactos?rev=49366&view=revLog:
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);