1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| // ------------------------------------------------------
BOOL SendStatusToSCM(DWORD dwCurrentState,
DWORD dwWin32ExitCode,
DWORD dwServiceSpecificExitCode,
DWORD dwCheckPoint,
DWORD dwWaitHint)
{
BOOL bSuccess;
SERVICE_STATUS ServiceStatus;
ServiceStatus.dwServiceType = SERVICE_WIN32_SHARE_PROCESS; // SERVICE_WIN32_OWN_PROCESS
ServiceStatus.dwCurrentState= dwCurrentState;
ServiceStatus.dwControlsAccepted=0;
if(dwCurrentState != SERVICE_START_PENDING)
ServiceStatus.dwControlsAccepted= SERVICE_ACCEPT_STOP |
SERVICE_ACCEPT_SHUTDOWN;
ServiceStatus.dwWin32ExitCode=ERROR_SERVICE_SPECIFIC_ERROR;
if(!dwServiceSpecificExitCode) ServiceStatus.dwWin32ExitCode=dwWin32ExitCode;
ServiceStatus.dwServiceSpecificExitCode=dwServiceSpecificExitCode;
ServiceStatus.dwCheckPoint = dwCheckPoint;
ServiceStatus.dwWaitHint = dwWaitHint;
bSuccess = SetServiceStatus(ServiceStatusHandle,&ServiceStatus);
if(!bSuccess) StopService();
return bSuccess;
} |
Partager