다음을 통해 공유


애플리케이션 검증 도구 - 코드 중지 - 서비스

서비스는 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
  • 심각도:  오류
  • 일회성 오류:  아니요
  • 오류 보고서:  휴식
  • 파일에 로그:  예
  • 백트레이스 만들기:  예

참고 항목

애플리케이션 검증 도구 - 코드 및 정의 중지

애플리케이션 검증 도구 - 개요

애플리케이션 검증 도구 - 기능

애플리케이션 검증 도구 - 애플리케이션 테스트

애플리케이션 검증 도구 - 애플리케이션 검증 도구 내의 테스트

애플리케이션 검증 도구 - 애플리케이션 검증 도구 디버깅 중지

애플리케이션 검증 도구 - 질문과 대답