SERVICE_CONTROL_STATUS_REASON_PARAMSA 구조체(winsvc.h)

서비스 제어 매개 변수를 포함합니다.

구문

typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSA {
  DWORD                  dwReason;
  LPSTR                  pszComment;
  SERVICE_STATUS_PROCESS ServiceStatus;
} SERVICE_CONTROL_STATUS_REASON_PARAMSA, *PSERVICE_CONTROL_STATUS_REASON_PARAMSA;

멤버

dwReason

서비스를 SERVICE_CONTROL_STOP 상태 변경하는 이유입니다. 현재 컨트롤 코드가 SERVICE_CONTROL_STOP 않으면 이 멤버는 무시됩니다.

이 멤버는 하나의 일반 코드, 하나의 주요 이유 코드 및 하나의 사소한 이유 코드의 조합으로 설정되어야 합니다.

다음은 일반적인 이유 코드입니다.

의미
SERVICE_STOP_REASON_FLAG_CUSTOM
0x20000000
이유 코드는 사용자가 정의합니다. 이 플래그가 없으면 시스템에서 이유 코드를 정의합니다. 시스템 이유 코드로 이 플래그를 지정하면 함수 호출이 실패합니다.

사용자는 SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM(0x00ff0000) 및 SERVICE_STOP_REASON_MINOR_MAX_CUSTOM(0x0000FFFF)을 통해 범위 SERVICE_STOP_REASON_MINOR_MIN_CUSTOM(0x00000100)의 사소한 이유 코드를 통해 범위 SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM(0x00400000)에 사용자 지정 주요 이유 코드를 만들 수 있습니다.

SERVICE_STOP_REASON_FLAG_PLANNED
0x40000000
서비스 중지가 계획되었습니다.
SERVICE_STOP_REASON_FLAG_UNPLANNED
0x10000000
서비스 중지가 계획되지 않았습니다.
 

주요 이유 코드는 다음과 같습니다.

의미
SERVICE_STOP_REASON_MAJOR_APPLICATION
0x00050000
애플리케이션 문제.
SERVICE_STOP_REASON_MAJOR_HARDWARE
0x00020000
하드웨어 문제입니다.
SERVICE_STOP_REASON_MAJOR_NONE
0x00060000
큰 이유가 없습니다.
SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM
0x00030000
운영 체제 문제.
SERVICE_STOP_REASON_MAJOR_OTHER
0x00010000
기타 문제.
SERVICE_STOP_REASON_MAJOR_SOFTWARE
0x00040000
소프트웨어 문제.
 

다음은 사소한 이유 코드입니다.

의미
SERVICE_STOP_REASON_MINOR_DISK
0x00000008
디스크를 선택해야 합니다.
SERVICE_STOP_REASON_MINOR_ENVIRONMENT
0x0000000a
환경입니다.
SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER
0x0000000b
드라이버.
SERVICE_STOP_REASON_MINOR_HUNG
0x00000006
응답.
SERVICE_STOP_REASON_MINOR_INSTALLATION
0x00000003
설치.
SERVICE_STOP_REASON_MINOR_MAINTENANCE
0x00000002
유지 관리.
SERVICE_STOP_REASON_MINOR_MMC
0x00000016
MMC 문제.
SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY
0x00000011
네트워크 연결
SERVICE_STOP_REASON_MINOR_NETWORKCARD
0x00000009
네트워크 카드.
SERVICE_STOP_REASON_MINOR_NONE
0x00060000
사소한 이유가 없습니다.
SERVICE_STOP_REASON_MINOR_OTHER
0x00000001
기타 문제.
SERVICE_STOP_REASON_MINOR_OTHERDRIVER
0x0000000c
기타 드라이버 이벤트입니다.
SERVICE_STOP_REASON_MINOR_RECONFIG
0x00000005
재구성.
SERVICE_STOP_REASON_MINOR_SECURITY
0x00000010
보안 문제.
SERVICE_STOP_REASON_MINOR_SECURITYFIX
0x0000000f
보안 업데이트.
SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL
0x00000015
보안 업데이트 제거.
SERVICE_STOP_REASON_MINOR_SERVICEPACK
0x0000000d
서비스 팩.
SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL
0x00000013
서비스 팩 제거.
SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE
0x0000000e
소프트웨어 업데이트.
SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL
0x0000000e
소프트웨어 업데이트 제거.
SERVICE_STOP_REASON_MINOR_UNSTABLE
0x00000007
불안정.
SERVICE_STOP_REASON_MINOR_UPGRADE
0x00000004
업그레이드.
SERVICE_STOP_REASON_MINOR_WMI
0x00000012
WMI 문제.

pszComment

서비스 중지에 대한 추가 정보를 제공하는 선택적 문자열입니다. 이 문자열은 중지 이유 코드와 함께 이벤트 로그에 저장됩니다. 이 멤버는 NULL이거나 종료 null 문자를 포함하여 128자 미만의 유효한 문자열이어야 합니다.

ServiceStatus

최신 서비스 상태 정보를 수신하는 SERVICE_STATUS_PROCESS 구조체에 대한 포인터입니다. 반환되는 정보는 서비스가 서비스 제어 관리자에게 보고한 가장 최근의 상태 반영합니다.

Service Control Manager는 ControlServiceEx 가 NO_ERROR, ERROR_INVALID_SERVICE_CONTROL, ERROR_SERVICE_CANNOT_ACCEPT_CTRL 또는 ERROR_SERVICE_NOT_ACTIVE 오류 코드 중 하나를 반환하는 경우에만 구조를 채웁니다. 그렇지 않으면 구조체가 채워지지 않습니다.

설명

참고

winsvc.h 헤더는 SERVICE_CONTROL_STATUS_REASON_PARAMS 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
머리글 winsvc.h(Windows.h 포함)

추가 정보

ControlServiceEx

SERVICE_STATUS_PROCESS