Rolf Kalbermatter : advapi32: Make service_start_process return the pid to the caller.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Apr 24 07:23:58 CDT 2007


Module: wine
Branch: master
Commit: a60f60ac43f7dbea3648018e5bc6d57d186df5c2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a60f60ac43f7dbea3648018e5bc6d57d186df5c2

Author: Rolf Kalbermatter <r.kalbermatter at 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);
     }
 




More information about the wine-cvs mailing list