개발자 Q&A

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

2025.07.02 07:14

Win32 API - 서비스 상태 설정에 관한 질문

목록
  • 루트권한 17일 전 2025.07.02 07:14
  • 48
    1
안녕하세요 선생님. 저는 현재 윈도우 기반 서비스를 개발 중입니다. 서비스 상태를 설정할 때 win32_set_service_pause_resume_state 함수를 사용하려고 하는데, 이 함수의 사용법을 알려주세요.

제가 이해한 바로는 서비스를 일시 정지하거나 재개하는 함수인 것 같지만, 정확한 사용 방법을 알려주세요.

예를 들어, 서비스가 현재 일시 정지 상태일 때, 이 함수를 사용하여 서비스를 재개할 수 있을까요?

또한, 서비스가 현재 실행 중일 때, 이 함수를 사용하여 서비스를 일시 정지할 수 있을까요?

이 함수의 반환 값은 무엇을 의미하는지 알려주세요.

위의 질문에 대한 답변을 통해, 서비스 상태를 설정할 때 win32_set_service_pause_resume_state 함수를 올바르게 사용할 수 있도록 도와주세요.

    댓글목록

    profile_image
    나우호스팅  17일 전



    win32_set_service_pause_resume_state 함수는 서비스를 일시 정지 또는 재개하는 함수입니다. 이 함수의 사용법은 다음과 같습니다.

    1. 서비스를 일시 정지하기 위해서는, 서비스의 현재 상태가 RUNNING(실행 중)일 때 이 함수를 사용합니다. 함수의 첫 번째 인자로 SERVICE_ACCEPT_PAUSE_CONTINUE(서비스 일시 정지 또는 재개) 플래그를 전달하고, 두 번째 인자로 서비스의 이름을 전달합니다. 예를 들어, 서비스가 현재 RUNNING 상태일 때 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    SC_HANDLE hService = OpenService(
    
        hSCManager, // 서비스 관리자 핸들
    
        "서비스 이름", // 서비스 이름
    
        SERVICE_START | SERVICE_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE // 서비스 제어 플래그
    
    );
    
    
    
    if (hService != NULL)
    
    {
    
        if (win32_set_service_pause_resume_state(hService, SERVICE_ACCEPT_PAUSE_CONTINUE, SERVICE_PAUSED) == 0)
    
        {
    
            // 서비스 일시 정지에 성공했습니다.
    
        }
    
        else
    
        {
    
            // 서비스 일시 정지에 실패했습니다.
    
        }
    
    }
    
    


    2. 서비스를 재개하기 위해서는, 서비스의 현재 상태가 PAUSED(일시 정지)일 때 이 함수를 사용합니다. 함수의 첫 번째 인자로 SERVICE_ACCEPT_PAUSE_CONTINUE(서비스 일시 정지 또는 재개) 플래그를 전달하고, 두 번째 인자로 서비스의 이름을 전달합니다. 예를 들어, 서비스가 현재 PAUSED 상태일 때 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    SC_HANDLE hService = OpenService(
    
        hSCManager, // 서비스 관리자 핸들
    
        "서비스 이름", // 서비스 이름
    
        SERVICE_START | SERVICE_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE // 서비스 제어 플래그
    
    );
    
    
    
    if (hService != NULL)
    
    {
    
        if (win32_set_service_pause_resume_state(hService, SERVICE_ACCEPT_PAUSE_CONTINUE, SERVICE_RUNNING) == 0)
    
        {
    
            // 서비스 재개를 성공했습니다.
    
        }
    
        else
    
        {
    
            // 서비스 재개를 실패했습니다.
    
        }
    
    }
    
    


    win32_set_service_pause_resume_state 함수의 반환 값은 성공 시 0을, 실패 시 에러 코드를 반환합니다.

    2025-07-02 07:15

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

검색

게시물 검색