⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warntservicesvc.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarNtServiceSvc.h"   // class implemented/////////////////////////////// PUBLIC /////////////////////////////////////////============================= LIFECYCLE ====================================WarNtServiceSvc::WarNtServiceSvc(): mhSvc(NULL){}// WarNtServiceSvcWarNtServiceSvc::~WarNtServiceSvc(){    if (mhSvc)        CloseServiceHandle(mhSvc);}// ~WarNtServiceSvc//============================= OPERATORS ====================================//============================= OPERATIONS ===================================void WarNtServiceSvc::Create(war_ccsysstr_t machineName,                             DWORD dwMgrAccessType,                             war_ccsysstr_t serviceName,                             DWORD dwSvcAccessType,                             bool doLock)                             throw(WarException){    WarNtServiceMgr::Create(machineName, dwMgrAccessType, doLock);    if ((mhSvc = OpenService(mhMgr, serviceName, dwSvcAccessType))        == NULL)    {        WarThrow(WarSystemError(), NULL);    }}void WarNtServiceSvc::StartService() throw (WarException){    SERVICE_STATUS ss;    memset(&ss, 0, sizeof(ss));        if (!::QueryServiceStatus(mhSvc, &ss))        WarThrow(WarSystemError(), "QueryServiceStatus()");        if ((ss.dwCurrentState == SERVICE_PAUSED)        || (ss.dwCurrentState == SERVICE_PAUSE_PENDING))    {        if (!::ControlService(mhSvc, SERVICE_CONTROL_CONTINUE, &ss))            WarThrow(WarSystemError(), "::ControlService()");                while (ss.dwCurrentState == SERVICE_CONTINUE_PENDING)        {            ::Sleep(500);            if (!::QueryServiceStatus(mhSvc, &ss))                WarThrow(WarSystemError(), "QueryServiceStatus()");        }        if (ss.dwCurrentState != SERVICE_RUNNING)            WarThrow(WarError(WAR_ERR_UNEXCPECTED_REPLY_CODE), NULL);                return;    }    if ((ss.dwCurrentState == SERVICE_START_PENDING)        || (ss.dwCurrentState == SERVICE_CONTINUE_PENDING))        return;        if (!::StartService(mhSvc, NULL, NULL))        WarThrow(WarSystemError(), "::StartService()");        do     {        ::Sleep(500);        if (!::QueryServiceStatus(mhSvc, &ss))            WarThrow(WarSystemError(), "QueryServiceStatus()");    } while(ss.dwCurrentState == SERVICE_START_PENDING);        if (ss.dwCurrentState != SERVICE_RUNNING)        WarThrow(WarError(WAR_ERR_UNEXCPECTED_REPLY_CODE), NULL);}void WarNtServiceSvc::PauseService() throw (WarException){    SERVICE_STATUS ss;    memset(&ss, 0, sizeof(ss));    if (!::ControlService(mhSvc, SERVICE_CONTROL_PAUSE, &ss))        WarThrow(WarSystemError(), "::ControlService()");    while (ss.dwCurrentState == SERVICE_PAUSE_PENDING)    {        ::Sleep(500);        if (!::QueryServiceStatus(mhSvc, &ss))            WarThrow(WarSystemError(), "QueryServiceStatus()");    }    if (ss.dwCurrentState != SERVICE_PAUSED)        WarThrow(WarError(WAR_ERR_UNEXCPECTED_REPLY_CODE), NULL);}void WarNtServiceSvc::StopService() throw (WarException){    SERVICE_STATUS ss;    memset(&ss, 0, sizeof(ss));    if (!::ControlService(mhSvc, SERVICE_CONTROL_STOP, &ss))        WarThrow(WarSystemError(), "::ControlService()");    while (ss.dwCurrentState == SERVICE_STOP_PENDING)    {        ::Sleep(500);        if (!::QueryServiceStatus(mhSvc, &ss))            WarThrow(WarSystemError(), "QueryServiceStatus()");    }    if (ss.dwCurrentState != SERVICE_STOPPED)        WarThrow(WarError(WAR_ERR_UNEXCPECTED_REPLY_CODE), NULL);}//============================= CALLBACK   ===================================//============================= ACCESS     ===================================//============================= INQUIRY    ===================================/////////////////////////////// PROTECTED  ////////////////////////////////////////////////////////////////// PRIVATE    ///////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -