다음을 통해 공유


_invalid_parameter, _invalid_parameter_noinfo, _invalid_parameter_noinfo_noreturn_invoke_watson

이러한 함수는 C 런타임 라이브러리에서 CRT 라이브러리 함수에 전달된 유효하지 않은 매개 변수를 처리하는 데 사용됩니다. 코드에서는 유효하지 않은 매개 변수의 기본 처리 또는 사용자 지정 가능한 처리를 지원하기 위해 이러한 함수를 사용할 수도 있습니다.

구문

extern "C" void __cdecl
_invalid_parameter(
    wchar_t const* const expression,
    wchar_t const* const function_name,
    wchar_t const* const file_name,
    unsigned int   const line_number,
    uintptr_t      const reserved);

extern "C" void __cdecl
_invalid_parameter_noinfo(void);

extern "C" __declspec(noreturn) void __cdecl
_invalid_parameter_noinfo_noreturn(void);

extern "C" __declspec(noreturn) void __cdecl
_invoke_watson(
    wchar_t const* const expression,
    wchar_t const* const function_name,
    wchar_t const* const file_name,
    unsigned int   const line_number,
    uintptr_t      const reserved);

매개 변수

expression
유효하지 않은 소스 코드 매개 변수 식을 나타내는 문자열입니다.

function_name
처리기를 호출한 함수의 이름입니다.

file_name
처리기가 호출된 소스 코드 파일입니다.

line_number
처리기가 호출된 소스 코드의 줄 번호입니다.

reserved
사용되지 않습니다.

반환 값

이러한 함수는 값을 반환하지 않습니다. 및 _invoke_watson 함수는 _invalid_parameter_noinfo_noreturn 호출자에게 반환되지 않으며 경우에 따라 _invalid_parameter _invalid_parameter_noinfo 호출자에게 반환되지 않을 수 있습니다.

설명

C 런타임 라이브러리 함수가 유효하지 않은 매개 변수를 전달하는 경우 라이브러리 함수는 프로그래머가 여러 가지 작업을 수행하도록 지정할 수 있는 함수인 잘못된 매개 변수 처리기를 호출합니다. 예를 들어 사용자에게 문제를 보고하거나, 로그에 기록하거나, 디버거를 중단하거나, 프로그램을 종료하거나, 아무 작업도 수행하지 않을 수 있습니다. 프로그래머가 함수를 지정하지 않으면 기본 처리기인 _invoke_watson이 호출됩니다.

기본적으로 디버그 코드에서 유효하지 않은 매개 변수가 식별되면 CRT 라이브러리 함수는 verbose 매개 변수를 사용하여 _invalid_parameter 함수를 호출합니다. 비디버그 코드에서는 _invalid_parameter_noinfo 함수가 호출되며, 이 함수는 빈 매개 변수를 사용하여 _invalid_parameter 함수를 호출합니다. 비디버그 CRT 라이브러리 함수에서 프로그램을 종료해야 하는 경우 _invalid_parameter_noinfo_noreturn 함수가 호출되며, 이 함수는 빈 매개 변수를 사용하여 _invalid_parameter 함수를 호출한 다음 _invoke_watson 함수를 호출하여 강제로 프로그램을 종료합니다.

_invalid_parameter 함수는 사용자 정의 잘못된 매개 변수 처리기가 설정되었는지 확인하고 그럴 경우 호출합니다. 예를 들어 사용자 정의 스레드 로컬 처리기가 현재 스레드의 호출에 set_thread_local_invalid_parameter_handler 의해 설정된 경우 호출되면 함수가 반환됩니다. 그렇지 않은 경우 사용자 정의 전역 잘못된 매개 변수 처리기가 호출에 set_invalid_parameter_handler의해 설정된 경우 호출되면 함수가 반환됩니다. 그렇지 않으면 기본 처리기 _invoke_watson이 호출됩니다. _invoke_watson의 기본 동작은 프로그램을 종료하는 것입니다. 사용자 정의 처리기가 종료되거나 반환될 수 있습니다. 복구가 확실하지 않으면 사용자 정의 처리기에서 프로그램을 종료하는 것이 좋습니다.

기본 처리기가 _invoke_watson 호출될 때 프로세서가 작업을 지원하는 __fastfail 경우 매개 변수 FAST_FAIL_INVALID_ARG 를 사용하여 호출되고 프로세스가 종료됩니다. 그렇지 않으면 빠른 실패 예외가 발생하며 연결된 디버거에서 catch할 수 있습니다. 프로세스를 계속하도록 허용된 경우 예외 코드 상태를 STATUS_INVALID_CRUNTIME_PARAMETER사용하여 Windows TerminateProcess 함수를 호출하여 종료됩니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

함수 필수 헤더
_invalid_parameter, _invalid_parameter_noinfo, _invalid_parameter_noinfo_noreturn_invoke_watson <corecrt.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

참고 항목

사전순 함수 참조
_get_invalid_parameter_handler, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler, _set_thread_local_invalid_parameter_handler
매개 변수 유효성 검사