/** * Report service status to the ServiceControlManager. * * @param status status * @param win32ExitCode exit code * @param waitHint time to wait */ private void reportStatus(int status, int win32ExitCode, int waitHint) { Advapi32 advapi32; SERVICE_STATUS serviceStatus; advapi32 = Advapi32.INSTANCE; serviceStatus = new SERVICE_STATUS(); serviceStatus.dwServiceType = WinNT.SERVICE_WIN32_OWN_PROCESS; serviceStatus.dwControlsAccepted = Winsvc.SERVICE_ACCEPT_STOP | Winsvc.SERVICE_ACCEPT_SHUTDOWN; serviceStatus.dwWin32ExitCode = win32ExitCode; serviceStatus.dwWaitHint = waitHint; serviceStatus.dwCurrentState = status; advapi32.SetServiceStatus(serviceStatusHandle, serviceStatus); }