以下代码是在inline void CServiceModule::Handler(DWORD dwOpcode)
函数里的处理暂停和继续服务,我这样子写正确吗?为什么它说无法暂停! case SERVICE_CONTROL_PAUSE:
SetServiceStatus(SERVICE_PAUSE_PENDING);
PauseMyService();
break;
case SERVICE_CONTROL_CONTINUE:
SetServiceStatus(SERVICE_CONTINUE_PENDING);
ContinueMyService();
break;
函数里的处理暂停和继续服务,我这样子写正确吗?为什么它说无法暂停! case SERVICE_CONTROL_PAUSE:
SetServiceStatus(SERVICE_PAUSE_PENDING);
PauseMyService();
break;
case SERVICE_CONTROL_CONTINUE:
SetServiceStatus(SERVICE_CONTINUE_PENDING);
ContinueMyService();
break;
{
SERVICE_STATUS ssStatus;
//获得ServiceControl Manager的句柄
SC_HANDLE shServiceManager=OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS);
//然后获得用户希望检查的服务的句柄
SC_HANDLE shDefineService=OpenService(shServiceManager,"W3SVC",SERVICE_ALL_ACCESS);
if((QueryServiceStatus(shDefineService,&ssStatus))==0)
AfxMessageBox("无法确定服务状态",MB_ICONINFORMATION);
//下面的代码用于检查服务是否被停止,如果停止则打开此服务
SC_HANDLE stService;
if(ssStatus.dwCurrentState==SERVICE_STOPPED)
{
//AfxMessageBox("启动IIS",MB_ICONINFORMATION);
stService=OpenService(shServiceManager,"W3SVC",SERVICE_START|GENERIC_EXECUTE);
StartService(stService,0,NULL);
CloseServiceHandle(stService);
}
else
{
//AfxMessageBox("停止IIS",MB_ICONINFORMATION);
stService=OpenService(shServiceManager,"W3SVC",SERVICE_STOP|GENERIC_EXECUTE);
ControlService(stService,SERVICE_CONTROL_STOP,&ssStatus);
CloseServiceHandle(stService);
}
CloseServiceHandle(shDefineService);
CloseServiceHandle(shServiceManager);
}
SetServiceStatus(SERVICE_PAUSED);
PauseMyService();
break;
case SERVICE_CONTROL_CONTINUE:
SetServiceStatus(SERVICE_RUNNING);
ContinueMyService();
break;结贴!