void WINAPI Service_Main(DWORD dwArgc, LPTSTR *lpszArgv)
{
DebugMessage(_T("this is function Service_Main"));
ssStatus.dwServiceType = SERVICE_WIN32;
ssStatus.dwCurrentState = SERVICE_START_PENDING; <span style="white-space:pre"> </span>
ssStatus.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN; //在这里指明服务接受何种控制,如果不希望STOP则不要设置<span style="font-family: Arial, Helvetica, sans-serif;">SERVICE_ACCEPT_STOP</span>
ssStatus.dwWin32ExitCode = 0;
ssStatus.dwServiceSpecificExitCode = 0;
ssStatus.dwCheckPoint = 0;
ssStatus.dwWaitHint = 0;
//注册服务控制处理函数
sshStatusHandle=RegisterServiceCtrlHandler(TEXT(SZSERVICENAME), Service_Ctrl);
//如果注册失败
if(!sshStatusHandle)
{
DebugMessage(_T("注册服务控制处理函数失败,错误代码%d"),GetLastError());
goto cleanup;
return;
}
//更新服务状态
if(!ReportStatusToSCMgr(SERVICE_START_PENDING, NO_ERROR, TIMEOUT)){
DebugMessage(_T("ReportStatusToSCMgr failed with error %d"),GetLastError());
goto cleanup; //更新服务状态失败则转向 cleanup
}
ServiceStart(dwArgc,lpszArgv);
return;
cleanup:
//把服务状态更新为 SERVICE_STOPPED,并退出。
if(sshStatusHandle)
ReportStatusToSCMgr(SERVICE_STOPPED, GetLastError(), 0);
}