Mikolaj Zalewski : advapi32:
Return an error if we try to start an already running service.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Aug 23 07:26:06 CDT 2007
Module: wine
Branch: master
Commit: 346fbb32e109c20ed7367e92a4a72c52c1f077c0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=346fbb32e109c20ed7367e92a4a72c52c1f077c0
Author: Mikolaj Zalewski <mikolajz at google.com>
Date: Wed Aug 22 18:08:29 2007 -0700
advapi32: Return an error if we try to start an already running service.
---
dlls/advapi32/service.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 458653c..f922e62 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -454,7 +454,8 @@ static BOOL service_handle_start(HANDLE pipe, service_data *service, DWORD count
if (service->thread)
{
- ERR("service is not stopped\n");
+ WARN("service is not stopped\n");
+ result = ERROR_SERVICE_ALREADY_RUNNING;
goto end;
}
@@ -503,7 +504,14 @@ static BOOL service_send_start_message(HANDLE pipe, LPCWSTR *argv, DWORD argc)
r = WriteFile(pipe, ssi, sizeof *ssi + len*sizeof(WCHAR), &count, NULL);
if (r)
+ {
r = ReadFile(pipe, &result, sizeof result, &count, NULL);
+ if (r && result)
+ {
+ SetLastError(result);
+ r = FALSE;
+ }
+ }
HeapFree(GetProcessHeap(),0,ssi);
@@ -1764,11 +1772,14 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs,
CloseHandle(handle);
}
- handle = service_open_pipe(hsvc->name);
- if (handle != INVALID_HANDLE_VALUE)
+ if (r)
{
- service_set_processID(handle, dwProcessId, &dwResult);
- CloseHandle(handle);
+ handle = service_open_pipe(hsvc->name);
+ if (handle != INVALID_HANDLE_VALUE)
+ {
+ service_set_processID(handle, dwProcessId, &dwResult);
+ CloseHandle(handle);
+ }
}
UnlockServiceDatabase( hLock );
More information about the wine-cvs
mailing list