개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.02 19:50

win32_set_service_pause_resume_state 관련 질문내용

목록
  • Express킬러 오래 전 2025.06.02 19:50 인기
  • 103
    1
win32_set_service_pause_resume_state 함수 사용 방법에 대한 질문입니다.

안녕하세요 선생님.

저는 현재 윈도우 서비스를 개발하고 있습니다.
윈도우 서비스를 시작하고 중단하는 기능을 구현하려고 합니다.

win32_set_service_pause_resume_state 함수를 사용하려고 합니다.
하지만, 이 함수의 사용 방법에 대해 조금 혼동이 됩니다.

해당 함수의 첫 번째 매개 변수는 서비스 이름을 나타내는 문자열을 받는 것 같았는데,
제가 작성한 서비스 이름은 서비스 이름이 아닌 서비스 제어 매니저의 이름인 것 같습니다.

win32_set_service_pause_resume_state 함수의 첫 번째 매개 변수는 서비스 이름이 아닌 서비스 제어 매니저의 이름을 받는 건가요?

혹시, 이 함수를 사용할 때 유의해야 하는 점이 있나요?

제가 이해한 내용이 맞는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    win32_set_service_pause_resume_state 함수의 첫 번째 매개 변수는 서비스 이름이 아닌 서비스 제어 매니저의 이름을 받는 것은 아닙니다.

    서비스 이름을 직접 입력해야 합니다.

    이 함수를 사용할 때 유의해야 하는 점은 서비스 이름을 정확하게 입력해야 하며, 서비스가 이미 시작된 상태에서 중단하거나 중단된 상태에서 시작하려고 할 때는 에러가 발생할 수 있습니다.

    서비스 제어 매니저의 이름을 사용하는 경우는 서비스를 등록할 때 사용하는 서비스 제어 매니저의 이름을 사용하는 것입니다.

    예를 들어, 서비스를 등록할 때 서비스 제어 매니저의 이름을 "MyServiceCtrlManager"로 설정했다면, 이 이름을 사용하여 서비스를 제어할 수 있습니다.

    하지만, 일반적으로 서비스 이름을 사용하여 서비스를 제어하는 것이 더 일반적이고 편리합니다.

    예를 들어, 서비스 이름을 "MyService"로 설정했다면, 이 이름을 사용하여 서비스를 제어할 수 있습니다.

    win32_set_service_pause_resume_state 함수를 사용할 때는 서비스 이름을 정확하게 입력하고, 서비스가 이미 시작된 상태에서 중단하거나 중단된 상태에서 시작하려고 할 때는 에러가 발생할 수 있으므로 주의해야 합니다.

    서비스 이름을 직접 입력하고, 서비스가 이미 시작된 상태에서 중단하거나 중단된 상태에서 시작하려고 할 때는 에러를 처리하는 코드를 추가하는 것이 좋습니다.

    예를 들어, 서비스 이름을 "MyService"로 설정하고, 서비스가 이미 시작된 상태에서 중단하려고 할 때는 에러를 처리하는 코드를 추가할 수 있습니다.

    #hostingforum.kr
    c
    
    SC_HANDLE hService;
    
    SC_HANDLE hSCManager;
    
    
    
    // 서비스 제어 매니저의 이름을 얻어옵니다.
    
    hSCManager = OpenService(NULL, "MyServiceCtrlManager", SERVICE_QUERY_STATUS);
    
    
    
    // 서비스 이름을 얻어옵니다.
    
    hService = OpenService(hSCManager, "MyService", SERVICE_QUERY_STATUS);
    
    
    
    // 서비스를 중단합니다.
    
    if (!ControlService(hService, SERVICE_CONTROL_STOP, 0))
    
    {
    
        // 에러를 처리합니다.
    
        printf("서비스 중단에 실패했습니다.n");
    
    }
    
    else
    
    {
    
        printf("서비스 중단에 성공했습니다.n");
    
    }
    
    
    
    // 서비스 제어 매니저와 서비스를 닫습니다.
    
    CloseServiceHandle(hSCManager);
    
    CloseServiceHandle(hService);
    
    

    2025-06-02 19:51

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,647건 / 30 페이지

검색

게시물 검색