애플리케이션 검증 도구 - 코드 중지 - 서비스
서비스는 Windows 서비스의 적절한 사용을 위해 검사 테스트합니다. 예를 들어 서비스가 제대로 시작되고 중지되는 경우를 예로 들 수 있습니다. Windows 서비스에 대한 자세한 내용은 서비스를 참조하세요.
다음 중지 코드는 이 테스트 집합에 포함되어 있습니다.
유니코드가 아닌 API 사용(예: RegisterServiceCtrlHandlerW 대신 RegisterServiceCtrlHandlerA)
가능한 원인대부분의 경우 애플리케이션이 정의된 UNICODE 매크로로 컴파일되지 않았기 때문에 유니코드가 아닌 인터페이스가 사용됩니다.
애플리케이션 검증 도구에 의해 표시되는 정보- 형식: - API 이름 %ws
- 매개 변수 1 - 사용되지 않습니다.
- 매개 변수 2 - 사용되지 않습니다.
- 매개 변수 3 - 사용되지 않습니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: USING_NON_UNICODE_API
- 중지 코드: 4000000
- 심각도: 오류
- 일회성 오류: 아니요
- 오류 보고서: 휴식
- 파일에 로그: 예
- 백트레이스 만들기: 예
StartServiceCtrlDispatcher API가 두 번째로 호출됩니다.
가능한 원인이 API는 서비스 wmain 함수가 시작될 때 한 번만 호출됩니다.
애플리케이션 검증 도구에 의해 표시되는 정보- 형식: - API 이름 %ws
- 매개 변수 1 - SERVICE_TABLE_ENTRY 매개 변수입니다.
- 매개 변수 2 - 사용되지 않습니다.
- 매개 변수 3 - 사용되지 않습니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: CTRL_DISPATCHER_CALLED_TWICE
- 중지 코드: 4000001
- 심각도: 오류
- 일회성 오류: 아니요
- 오류 보고서: 휴식
- 파일에 로그: 예
- 백트레이스 만들기: 예
SetServiceStatus에 잘못된 SERVICE_STATUS 핸들이 전달되고 있습니다.
가능한 원인잘못된 SERVICE_STATUS 핸들이 SetServiceStatus에 전달되고 있습니다.
애플리케이션 검증 도구에 의해 표시되는 정보- 형식: - API 이름 %ws
- 매개 변수 1 - SERVICE_STATUS_HANDLE 값입니다.
- 매개 변수 2 - 사용되지 않습니다.
- 매개 변수 3 - 사용되지 않습니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: INVALID_SERVICE_STATUS_HANDLE
- 중지 코드: 4000002
- 심각도: 오류
- 일회성 오류: 아니요
- 오류 보고서: 휴식
- 파일에 로그: 예
- 백트레이스 만들기: 예
SetServiceStatus가 두 스레드에서 호출되고 있습니다.
가능한 원인이 API는 직렬로 호출됩니다.
애플리케이션 검증 도구에 의해 표시되는 정보- 형식: - %ws 서비스에서 동시에 호출되는 API 이름 %ws
- 매개 변수 1 - LPSERVICE_STATUS 값이 전달되었습니다.
- 매개 변수 2 - 사용되지 않습니다.
- 매개 변수 3 - 사용되지 않습니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: SET_SERVICE_STATUS_RACE
- 중지 코드: 4000003
- 심각도: 오류
- 일회성 오류: 아니요
- 오류 보고서: 휴식
- 파일에 로그: 예
- 백트레이스 만들기: 예
서비스가 START_PENDING 상태인 동안 STOP/SHUTDOWN 컨트롤이 수락됩니다.
가능한 원인대부분의 서비스는 초기화 중에 중지/종료 컨트롤을 허용할 수 없습니다.
애플리케이션 검증 도구에 의해 표시되는 정보- 형식: - 서비스 이름: %ws dwControlsAccepted: %08X
- 매개 변수 1 - LPSERVICE_STATUS 값이 전달되었습니다.
- 매개 변수 2 - 사용되지 않습니다.
- 매개 변수 3 - 사용되지 않습니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: STOP_SHUTDOWN_ACCEPTED
- 중지 코드: 4000004
- 심각도: 경고
- 일회성 오류: 아니요
- 오류 보고서: 없음
- 파일에 로그: 예
- 백트레이스 만들기: 예
서비스가 잘못된 상태 전환을 시도하고 있습니다.
가능한 원인서비스가 잘못된 상태 전환을 수행하거나 동일한 상태 매개 변수를 설정하려고 했습니다.
애플리케이션 검증 도구에서 표시하는 정보- 형식: - 서비스 %ws가 잘못된 상태 전환을 시도하는 것을 발견했습니다.
- 매개 변수 1 - LPSERVICE_STATUS 현재 상태입니다.
- 매개 변수 2 - LPSERVICE_STATUS 새 상태입니다.
- 매개 변수 3 - 마지막 SetServiceStatus 스택 추적입니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: INVALID_STATE_TRANSITION
- 중지 코드: 4000005
- 심각도: 오류
- 일회성 오류: 아니요
- 오류 보고서: 휴식
- 파일에 로그: 예
- 백트레이스 만들기: 예
서비스가 동일한 상태 매개 변수를 설정하려고 합니다.
가능한 원인서비스에서 동일한 상태 매개 변수를 설정하려고 했습니다.
애플리케이션 검증 도구에서 표시하는 정보- 형식: - 서비스 %ws가 동일한 상태 매개 변수를 설정하려고 했습니다.
- 매개 변수 1 - LPSERVICE_STATUS 현재 상태입니다.
- 매개 변수 2 - LPSERVICE_STATUS 새 상태입니다.
- 매개 변수 3 - 마지막 SetServiceStatus 스택 추적입니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: DUPLICATE_STATE_PARAMS
- 중지 코드: 4000006
- 심각도: 경고
- 일회성 오류: 아니요
- 오류 보고서: 없음
- 파일에 로그: 예
- 백트레이스 만들기: 예
서비스가 STOPPED 상태로 전환된 후 보류 중인 스레드를 종료합니다.
가능한 원인서비스가 STOPPED 상태를 선언한 후 보류 중인 스레드를 남깁니다.
애플리케이션 검증 도구에서 표시하는 정보- 형식: - 서비스 %ws에서 스레드가 누출됩니다.
- 매개 변수 1 - 유출된 스레드의 스레드 ID입니다.
- 매개 변수 2 - 서비스 태그입니다.
- 매개 변수 3 - 사용되지 않습니다.
- 매개 변수 4 - 사용되지 않습니다.
- 테스트 계층: 서비스
- 중지 ID: LEAKED_THREAD
- 중지 코드: 4000007
- 심각도: 오류
- 일회성 오류: 아니요
- 오류 보고서: 휴식
- 파일에 로그: 예
- 백트레이스 만들기: 예
참고 항목
애플리케이션 검증 도구 - 애플리케이션 검증 도구 내의 테스트