Module: wine Branch: master Commit: a60f60ac43f7dbea3648018e5bc6d57d186df5c2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a60f60ac43f7dbea3648018e5b...
Author: Rolf Kalbermatter r.kalbermatter@hccnet.nl Date: Tue Apr 24 07:15:04 2007 +0200
advapi32: Make service_start_process return the pid to the caller.
---
dlls/advapi32/service.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 821b9d6..3979b06 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -1436,7 +1436,7 @@ BOOL WINAPI StartServiceA( SC_HANDLE hService, DWORD dwNumServiceArgs, /****************************************************************************** * 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}; PROCESS_INFORMATION pi; @@ -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); if (r) { - /* FIXME: Put the pid into the service struct */ + if (ppid) *ppid = pi.dwProcessId;
handles[1] = pi.hProcess; ret = WaitForMultipleObjectsEx(2, handles, FALSE, 30000, FALSE); @@ -1523,6 +1523,7 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs, { struct sc_service *hsvc; BOOL r = FALSE; + DWORD pid; SC_LOCK hLock; HANDLE handle = INVALID_HANDLE_VALUE;
@@ -1543,7 +1544,7 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs, if (handle==INVALID_HANDLE_VALUE) { /* start the service process */ - if (service_start_process(hsvc)) + if (service_start_process(hsvc, &pid)) handle = service_open_pipe(hsvc->name); }