Commit a60f60ac authored by Rolf Kalbermatter's avatar Rolf Kalbermatter Committed by Alexandre Julliard

advapi32: Make service_start_process return the pid to the caller.

parent e782b836
...@@ -1436,7 +1436,7 @@ BOOL WINAPI StartServiceA( SC_HANDLE hService, DWORD dwNumServiceArgs, ...@@ -1436,7 +1436,7 @@ BOOL WINAPI StartServiceA( SC_HANDLE hService, DWORD dwNumServiceArgs,
/****************************************************************************** /******************************************************************************
* service_start_process [INTERNAL] * service_start_process [INTERNAL]
*/ */
static DWORD service_start_process(struct sc_service *hsvc) static DWORD service_start_process(struct sc_service *hsvc, LPDWORD ppid)
{ {
static const WCHAR _ImagePathW[] = {'I','m','a','g','e','P','a','t','h',0}; static const WCHAR _ImagePathW[] = {'I','m','a','g','e','P','a','t','h',0};
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
...@@ -1470,7 +1470,7 @@ static DWORD service_start_process(struct sc_service *hsvc) ...@@ -1470,7 +1470,7 @@ static DWORD service_start_process(struct sc_service *hsvc)
r = CreateProcessW(NULL, path, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); r = CreateProcessW(NULL, path, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if (r) if (r)
{ {
/* FIXME: Put the pid into the service struct */ if (ppid) *ppid = pi.dwProcessId;
handles[1] = pi.hProcess; handles[1] = pi.hProcess;
ret = WaitForMultipleObjectsEx(2, handles, FALSE, 30000, FALSE); ret = WaitForMultipleObjectsEx(2, handles, FALSE, 30000, FALSE);
...@@ -1523,6 +1523,7 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs, ...@@ -1523,6 +1523,7 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs,
{ {
struct sc_service *hsvc; struct sc_service *hsvc;
BOOL r = FALSE; BOOL r = FALSE;
DWORD pid;
SC_LOCK hLock; SC_LOCK hLock;
HANDLE handle = INVALID_HANDLE_VALUE; HANDLE handle = INVALID_HANDLE_VALUE;
...@@ -1543,7 +1544,7 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs, ...@@ -1543,7 +1544,7 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs,
if (handle==INVALID_HANDLE_VALUE) if (handle==INVALID_HANDLE_VALUE)
{ {
/* start the service process */ /* start the service process */
if (service_start_process(hsvc)) if (service_start_process(hsvc, &pid))
handle = service_open_pipe(hsvc->name); handle = service_open_pipe(hsvc->name);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment