SERVICE_STATUS 구조체(winsvc.h)
서비스에 대한 상태 정보를 포함합니다. ControlService, EnumDependentServices, EnumServicesStatus 및 QueryServiceStatus 함수는 이 구조를 사용합니다. 서비스는 SetServiceStatus 함수에서 이 구조를 사용하여 현재 상태 서비스 제어 관리자에 보고합니다.
구문
typedef struct _SERVICE_STATUS {
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;
DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;
멤버
dwServiceType
서비스의 유형입니다. 이 멤버는 다음 값 중 하나일 수 있습니다.
서비스 유형이 SERVICE_WIN32_OWN_PROCESS 또는 SERVICE_WIN32_SHARE_PROCESS 있고 서비스가 LocalSystem 계정의 컨텍스트에서 실행되는 경우 다음 형식도 지정할 수 있습니다.
값 | 의미 |
---|---|
|
서비스는 데스크톱과 상호 작용할 수 있습니다.
자세한 내용은 Interactive Services를 참조하세요. |
dwCurrentState
서비스의 현재 상태입니다. 이 멤버는 다음 값 중 하나일 수 있습니다.
dwControlsAccepted
처리기 함수에서 서비스에서 수락하고 처리하는 컨트롤 코드입니다( Handler 및 HandlerEx 참조). 사용자 인터페이스 프로세스는 ControlService 또는 ControlServiceEx 함수에서 컨트롤 명령을 지정하여 서비스를 제어 할 수 있습니다. 기본적으로 모든 서비스는 SERVICE_CONTROL_INTERROGATE 값을 허용합니다.
SERVICE_CONTROL_DEVICEEVENT 값을 허용하려면 서비스에서 RegisterDeviceNotification 함수를 사용하여 디바이스 이벤트를 수신하도록 등록해야 합니다.
다음은 제어 코드입니다.
제어 코드 | 의미 |
---|---|
|
서비스는 중지 및 다시 시작하지 않고 바인딩의 변경 내용을 허용할 수 있는 네트워크 구성 요소입니다.
이 제어 코드를 사용하면 서비스에서 SERVICE_CONTROL_NETBINDADD, SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE 및 SERVICE_CONTROL_NETBINDDISABLE 알림을 받을 수 있습니다. |
|
서비스는 중지하고 다시 시작하지 않고 시작 매개 변수를 다시 읽을 수 있습니다.
이 제어 코드를 사용하면 서비스에서 SERVICE_CONTROL_PARAMCHANGE 알림을 받을 수 있습니다. |
|
서비스를 일시 중지하고 계속할 수 있습니다.
이 제어 코드를 사용하면 서비스에서 SERVICE_CONTROL_PAUSE 및 SERVICE_CONTROL_CONTINUE 알림을 받을 수 있습니다. |
|
서비스는 사전 처리 작업을 수행할 수 있습니다.
이 제어 코드를 사용하면 서비스에서 SERVICE_CONTROL_PRESHUTDOWN 알림을 받을 수 있습니다. ControlService 및 ControlServiceEx는 이 알림을 보낼 수 없습니다. 시스템만 보낼 수 있습니다. Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다. |
|
시스템 종료가 발생하면 서비스에 알림이 표시됩니다.
이 제어 코드를 사용하면 서비스에서 SERVICE_CONTROL_SHUTDOWN 알림을 받을 수 있습니다. ControlService 및 ControlServiceEx는 이 알림을 보낼 수 없습니다. 시스템만 보낼 수 있습니다. |
|
서비스를 중지할 수 있습니다.
이 제어 코드를 사용하면 서비스에서 SERVICE_CONTROL_STOP 알림을 받을 수 있습니다. |
이 멤버는 HandlerEx에서만 지원되는 다음과 같은 확장된 제어 코드를 포함할 수도 있습니다. (이러한 컨트롤 코드는 ControlService 또는 ControlServiceEx에서 보낼 수 없습니다.)
dwWin32ExitCode
서비스가 시작 또는 중지할 때 발생하는 오류를 보고하는 데 사용하는 오류 코드입니다. 서비스와 관련된 오류 코드를 반환하려면 dwServiceSpecificExitCode 멤버에 오류 코드가 포함되어 있음을 나타내기 위해 이 값을 ERROR_SERVICE_SPECIFIC_ERROR 설정해야 합니다. 서비스가 실행 중일 때와 정상 종료 시 이 값을 NO_ERROR 설정해야 합니다.
dwServiceSpecificExitCode
서비스가 시작되거나 중지되는 동안 오류가 발생할 때 서비스가 반환하는 서비스별 오류 코드입니다. dwWin32ExitCode 멤버가 ERROR_SERVICE_SPECIFIC_ERROR 설정되지 않으면 이 값은 무시됩니다.
dwCheckPoint
긴 시작, 중지, 일시 중지 또는 계속 작업 중에 진행 상황을 보고하기 위해 서비스가 주기적으로 증가하는 검사 지점 값입니다. 예를 들어 서비스는 시작할 때 초기화의 각 단계를 완료할 때 이 값을 증가시켜야 합니다. 서비스에서 작업을 호출한 사용자 인터페이스 프로그램은 이 값을 사용하여 긴 작업 중에 서비스의 진행률을 추적합니다. 이 값은 유효하지 않으며 서비스에 보류 중인 시작, 중지, 일시 중지 또는 계속 작업이 없는 경우 0이어야 합니다.
dwWaitHint
보류 중인 시작, 중지, 일시 중지 또는 계속 작업에 필요한 예상 시간(밀리초)입니다. 지정된 시간이 경과하기 전에 서비스는 증가된 dwCheckPoint 값 또는 dwCurrentState 변경으로 SetServiceStatus 함수에 대한 다음 호출을 수행해야 합니다. dwWaitHint에서 지정한 시간이 지나고 dwCheckPoint가 증가하지 않았거나 dwCurrentState가 변경되지 않은 경우 서비스 제어 관리자 또는 서비스 제어 프로그램에서 오류가 발생하고 서비스를 중지해야 한다고 가정할 수 있습니다. 그러나 서비스가 다른 서비스와 프로세스를 공유하는 경우 서비스 제어 관리자는 프로세스를 공유하는 다른 서비스도 종료해야 하므로 서비스 애플리케이션을 종료할 수 없습니다.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | winsvc.h(Windows.h 포함) |