advapi32: Make service_start_process return the pid to the caller.
This commit is contained in:
parent
e782b836be
commit
a60f60ac43
|
@ -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)
|
||||||
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,
|
||||||
{
|
{
|
||||||
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,
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue