services: Remove pipe argument from service_send_command function.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
20633b292b
commit
0819c739ec
@ -992,15 +992,14 @@ static BOOL service_accepts_control(const struct service_entry *service, DWORD d
|
|||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* service_send_command
|
* service_send_command
|
||||||
*/
|
*/
|
||||||
BOOL service_send_command( struct service_entry *service, HANDLE pipe,
|
BOOL service_send_command( struct service_entry *service, const void *data, DWORD size, DWORD *result )
|
||||||
const void *data, DWORD size, DWORD *result )
|
|
||||||
{
|
{
|
||||||
OVERLAPPED overlapped;
|
OVERLAPPED overlapped;
|
||||||
DWORD count, ret;
|
DWORD count, ret;
|
||||||
BOOL r;
|
BOOL r;
|
||||||
|
|
||||||
overlapped.hEvent = service->overlapped_event;
|
overlapped.hEvent = service->overlapped_event;
|
||||||
r = WriteFile(pipe, data, size, &count, &overlapped);
|
r = WriteFile(service->control_pipe, data, size, &count, &overlapped);
|
||||||
if (!r && GetLastError() == ERROR_IO_PENDING)
|
if (!r && GetLastError() == ERROR_IO_PENDING)
|
||||||
{
|
{
|
||||||
ret = WaitForSingleObject( service->overlapped_event, service_pipe_timeout );
|
ret = WaitForSingleObject( service->overlapped_event, service_pipe_timeout );
|
||||||
@ -1010,7 +1009,7 @@ BOOL service_send_command( struct service_entry *service, HANDLE pipe,
|
|||||||
*result = ERROR_SERVICE_REQUEST_TIMEOUT;
|
*result = ERROR_SERVICE_REQUEST_TIMEOUT;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
r = GetOverlappedResult( pipe, &overlapped, &count, FALSE );
|
r = GetOverlappedResult(service->control_pipe, &overlapped, &count, FALSE);
|
||||||
}
|
}
|
||||||
if (!r || count != size)
|
if (!r || count != size)
|
||||||
{
|
{
|
||||||
@ -1018,7 +1017,7 @@ BOOL service_send_command( struct service_entry *service, HANDLE pipe,
|
|||||||
*result = (!r ? GetLastError() : ERROR_WRITE_FAULT);
|
*result = (!r ? GetLastError() : ERROR_WRITE_FAULT);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
r = ReadFile(pipe, result, sizeof *result, &count, &overlapped);
|
r = ReadFile(service->control_pipe, result, sizeof *result, &count, &overlapped);
|
||||||
if (!r && GetLastError() == ERROR_IO_PENDING)
|
if (!r && GetLastError() == ERROR_IO_PENDING)
|
||||||
{
|
{
|
||||||
ret = WaitForSingleObject( service->overlapped_event, service_pipe_timeout );
|
ret = WaitForSingleObject( service->overlapped_event, service_pipe_timeout );
|
||||||
@ -1028,7 +1027,7 @@ BOOL service_send_command( struct service_entry *service, HANDLE pipe,
|
|||||||
*result = ERROR_SERVICE_REQUEST_TIMEOUT;
|
*result = ERROR_SERVICE_REQUEST_TIMEOUT;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
r = GetOverlappedResult( pipe, &overlapped, &count, FALSE );
|
r = GetOverlappedResult(service->control_pipe, &overlapped, &count, FALSE);
|
||||||
}
|
}
|
||||||
if (!r || count != sizeof *result)
|
if (!r || count != sizeof *result)
|
||||||
{
|
{
|
||||||
@ -1045,7 +1044,7 @@ BOOL service_send_command( struct service_entry *service, HANDLE pipe,
|
|||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* service_send_control
|
* service_send_control
|
||||||
*/
|
*/
|
||||||
static BOOL service_send_control(struct service_entry *service, HANDLE pipe, DWORD dwControl, DWORD *result)
|
static BOOL service_send_control(struct service_entry *service, DWORD dwControl, DWORD *result)
|
||||||
{
|
{
|
||||||
service_start_info *ssi;
|
service_start_info *ssi;
|
||||||
DWORD len;
|
DWORD len;
|
||||||
@ -1061,7 +1060,7 @@ static BOOL service_send_control(struct service_entry *service, HANDLE pipe, DWO
|
|||||||
ssi->name_size = strlenW(service->name) + 1;
|
ssi->name_size = strlenW(service->name) + 1;
|
||||||
strcpyW( ssi->data, service->name );
|
strcpyW( ssi->data, service->name );
|
||||||
|
|
||||||
r = service_send_command( service, pipe, ssi, ssi->total_size, result );
|
r = service_send_command( service, ssi, ssi->total_size, result );
|
||||||
HeapFree( GetProcessHeap(), 0, ssi );
|
HeapFree( GetProcessHeap(), 0, ssi );
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@ -1182,8 +1181,7 @@ DWORD __cdecl svcctl_ControlService(
|
|||||||
ret = WaitForSingleObject(control_mutex, 30000);
|
ret = WaitForSingleObject(control_mutex, 30000);
|
||||||
if (ret == WAIT_OBJECT_0)
|
if (ret == WAIT_OBJECT_0)
|
||||||
{
|
{
|
||||||
service_send_control(service->service_entry, service->service_entry->control_pipe,
|
service_send_control(service->service_entry, dwControl, &result);
|
||||||
dwControl, &result);
|
|
||||||
|
|
||||||
if (lpServiceStatus)
|
if (lpServiceStatus)
|
||||||
{
|
{
|
||||||
|
@ -834,7 +834,7 @@ static BOOL service_send_start_message(struct service_entry *service, HANDLE pro
|
|||||||
}
|
}
|
||||||
*p=0;
|
*p=0;
|
||||||
|
|
||||||
r = service_send_command( service, service->control_pipe, ssi, ssi->total_size, &result );
|
r = service_send_command( service, ssi, ssi->total_size, &result );
|
||||||
if (r && result)
|
if (r && result)
|
||||||
{
|
{
|
||||||
SetLastError(result);
|
SetLastError(result);
|
||||||
|
@ -80,8 +80,7 @@ void service_lock_exclusive(struct service_entry *service);
|
|||||||
void service_unlock(struct service_entry *service);
|
void service_unlock(struct service_entry *service);
|
||||||
DWORD service_start(struct service_entry *service, DWORD service_argc, LPCWSTR *service_argv);
|
DWORD service_start(struct service_entry *service, DWORD service_argc, LPCWSTR *service_argv);
|
||||||
void service_terminate(struct service_entry *service);
|
void service_terminate(struct service_entry *service);
|
||||||
BOOL service_send_command( struct service_entry *service, HANDLE pipe,
|
BOOL service_send_command( struct service_entry *service, const void *data, DWORD size, DWORD *result );
|
||||||
const void *data, DWORD size, DWORD *result );
|
|
||||||
|
|
||||||
extern HANDLE g_hStartedEvent;
|
extern HANDLE g_hStartedEvent;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user