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