X-Git-Url: http://git.iain.cx/?p=nssm.git;a=blobdiff_plain;f=hook.cpp;h=abe4577bb7c34630f2a09c39cb338c098b77fbbe;hp=dc9e02fabf43de77c96cd72e6b6d72f0b9968ada;hb=HEAD;hpb=6adc886e1fa296f67aacef0c01994e302e8caf86 diff --git a/hook.cpp b/hook.cpp index dc9e02f..abe4577 100644 --- a/hook.cpp +++ b/hook.cpp @@ -9,6 +9,9 @@ typedef struct { kill_t k; } hook_t; +const TCHAR *hook_event_strings[] = { NSSM_HOOK_EVENT_START, NSSM_HOOK_EVENT_STOP, NSSM_HOOK_EVENT_EXIT, NSSM_HOOK_EVENT_POWER, NSSM_HOOK_EVENT_ROTATE, NULL }; +const TCHAR *hook_action_strings[] = { NSSM_HOOK_ACTION_PRE, NSSM_HOOK_ACTION_POST, NSSM_HOOK_ACTION_CHANGE, NSSM_HOOK_ACTION_RESUME, NULL }; + static unsigned long WINAPI await_hook(void *arg) { hook_t *hook = (hook_t *) arg; if (! hook) return NSSM_HOOK_STATUS_ERROR; @@ -353,6 +356,7 @@ int nssm_hook(hook_thread_t *hook_threads, nssm_service_t *service, TCHAR *hook_ #endif ret = NSSM_HOOK_STATUS_NOTRUN; if (CreateProcess(0, cmd, 0, 0, inherit_handles, flags, 0, service->dir, &si, &pi)) { + close_output_handles(&si); hook->name = (TCHAR *) HeapAlloc(GetProcessHeap(), 0, HOOK_NAME_LENGTH * sizeof(TCHAR)); if (hook->name) _sntprintf_s(hook->name, HOOK_NAME_LENGTH, _TRUNCATE, _T("%s (%s/%s)"), service->name, hook_event, hook_action); hook->process_handle = pi.hProcess;