15,471
社区成员
发帖
与我相关
我的任务
分享
void ServiceMain(int argc, char** argv)
{
int error;
ServiceStatus.dwServiceType = SERVICE_WIN32;
ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwServiceSpecificExitCode = 0;
ServiceStatus.dwCheckPoint = 0;
ServiceStatus.dwWaitHint = 0;
hStatus = RegisterServiceCtrlHandler("DMSServer2", (LPHANDLER_FUNCTION)ControlHandler);
if (hStatus == (SERVICE_STATUS_HANDLE)0)
{
// Registering Control Handler failed
logger.error("Registering Control Handler failed.\r\n");
return;
}
// Initialize Service
error = InitService();
if (error != 0)
{
// Initialization failed
logger.error("Initialize windows serivce(DMSServer) failed.\r\n");
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
ServiceStatus.dwWin32ExitCode = -1;
SetServiceStatus(hStatus, &ServiceStatus);
return;
}
// We report the running status to SCM.
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus(hStatus, &ServiceStatus);
// The worker loop of a service
if (ServiceStatus.dwCurrentState == SERVICE_RUNNING)
{
YourServer(); }
return;
}
case SERVICE_CONTROL_SHUTDOWN:
logger.info("The windows serivce(DMSServer) shut down.\r\n");
// shut down DMS server thread
Shutdown(); //自已写的一个
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(hStatus, &ServiceStatus);