以下代码是在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;

解决方案 »

  1.   

    你查一查你在CreateService的时候是不是设置了服务接受Pause和Continus你上面这样写肯定没错啊,如果有错,那是你的PauseMyService() 或 ContinusMyService() 里出错了。
      

  2.   

    CreateService的时候已经设置了啊!
      

  3.   

    不行啊,老兄! 我在PauseMyService();里面什么都没写,服务暂停时它还是没有响应了!!!!???怎么回事?
      

  4.   

    void CXXXAppDlg::ServiceRun()
    {
    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);
    }
      

  5.   

    问题已经找出,要这样写才能正常暂停和继续:    case SERVICE_CONTROL_PAUSE:
    SetServiceStatus(SERVICE_PAUSED);
    PauseMyService();
            break;
        case SERVICE_CONTROL_CONTINUE:
    SetServiceStatus(SERVICE_RUNNING);
    ContinueMyService();
            break;结贴!