From 35f91f1203717f8ab9f00f0914025fc6606e102d Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 13 Aug 2007 03:52:21 +0000 Subject: [PATCH] windows-service-manager-20070812 provide the windows service manager with shutdown hints in addition to startup hints --- src/WINNT/afsd/afsd_service.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/WINNT/afsd/afsd_service.c b/src/WINNT/afsd/afsd_service.c index 6e9f9bc08..d850037eb 100644 --- a/src/WINNT/afsd/afsd_service.c +++ b/src/WINNT/afsd/afsd_service.c @@ -1352,7 +1352,7 @@ afsd_Main(DWORD argc, LPTSTR *argv) #ifndef NOTSERVICE ServiceStatus.dwCurrentState = SERVICE_RUNNING; ServiceStatus.dwWin32ExitCode = NO_ERROR; - ServiceStatus.dwCheckPoint = 0; + ServiceStatus.dwCheckPoint = 5; ServiceStatus.dwWaitHint = 0; /* accept Power events */ @@ -1401,6 +1401,13 @@ afsd_Main(DWORD argc, LPTSTR *argv) CloseHandle(hAFSDWorkerThread[cnt]); #endif + ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING; + ServiceStatus.dwWin32ExitCode = NO_ERROR; + ServiceStatus.dwCheckPoint = 6; + ServiceStatus.dwWaitHint = 120000; + ServiceStatus.dwControlsAccepted = 0; + SetServiceStatus(StatusHandle, &ServiceStatus); + afsi_log("Received Termination Signal, Stopping Service"); if ( GlobalStatus ) @@ -1420,19 +1427,6 @@ afsd_Main(DWORD argc, LPTSTR *argv) } FreeLibrary(hHookDll); hHookDll = NULL; - - if (hookRc == FALSE) - { - ServiceStatus.dwCurrentState = SERVICE_STOPPED; - ServiceStatus.dwWin32ExitCode = NO_ERROR; - ServiceStatus.dwCheckPoint = 0; - ServiceStatus.dwWaitHint = 0; - ServiceStatus.dwControlsAccepted = 0; - SetServiceStatus(StatusHandle, &ServiceStatus); - - /* exit if initialization failed */ - return; - } } @@ -1500,7 +1494,7 @@ afsd_Main(DWORD argc, LPTSTR *argv) ServiceStatus.dwCurrentState = SERVICE_STOPPED; ServiceStatus.dwWin32ExitCode = GlobalStatus ? ERROR_EXCEPTION_IN_SERVICE : NO_ERROR; - ServiceStatus.dwCheckPoint = 0; + ServiceStatus.dwCheckPoint = 7; ServiceStatus.dwWaitHint = 0; ServiceStatus.dwControlsAccepted = 0; SetServiceStatus(StatusHandle, &ServiceStatus); -- 2.39.5