📄 warntservicesvc.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 + -