다음을 통해 공유


_set_invalid_parameter_handler

CRT에 잘못 된 인수를 검색 하는 경우 호출 하는 함수를 설정 합니다.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

매개 변수

  • [in] pNew
    새 잘못 된 매개 변수 처리기에 대 한 함수 포인터입니다.

반환 값

잘못 된 매개 변수 처리기를 호출 하기 전에 포인터입니다.

설명

많은 C 런타임 함수에 전달 된 인수의 유효성을 검사 합니다.잘못 된 인수를 전달 하면 함수를 설정할 수 있습니다에서 errno 오류 번호 또는 오류 코드를 반환 합니다.이러한 경우에 잘못 된 매개 변수 처리기도 호출 됩니다.이 함수는 해당 처리기를 다른 함수에 설정 될 수 있습니다.하나의 함수 인수가 잘못 되었습니다. 처리기로 한 번에 지정할 수 있습니다.

프레임 워크에서는 잘못 된 매개 변수가 함수를 호출 하는 경우 일반적으로 복구할 수 없는 오류가 발생 했음을 의미 합니다.잘못 된 매개 변수가 함수 수 있습니다 및 다음 중단 된 데이터를 저장 해야 합니다.오류를 복구할 수 있는지 확실 하지 않으면이 컨트롤 main 함수에 반환 하지 않습니다.

잘못 된 매개 변수 처리기 함수는 다음과 같은 프로토타입이 있어야 합니다.

void _invalid_parameter(
   const wchar_t * expression,
   const wchar_t * function, 
   const wchar_t * file, 
   unsigned int line,
   uintptr_t pReserved
);

첫 번째 인수가 인수 식입니다.두 번째 인수는 잘못 된 인수를 수신 CRT 함수 이름입니다.세 번째 인수는 CRT 소스 파일 이름입니다.네 번째 인수를 해당 파일에서입니다.마지막 인수는 예약 되어 있습니다.모든 매개 변수는 값이 NULL CRT 라이브러리의 디버그 버전을 사용 하지 않으면 됩니다.

요구 사항

루틴

필수 헤더

_set_invalid_parameter_handler

<stdlib.h>

더 많은 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.

예제

다음 예제에서는 잘못 된 매개 변수 오류 처리기를 사용 하 여 CRT 소스에 잘못 된 매개 변수 및 파일 및 줄 수신 함수를 인쇄 합니다.CRT 디버그 라이브러리를 사용 하면이 예제에서 사용 하는 어설션을 또한 잘못 된 매개 변수 오류 throw _CrtSetReportMode.

// crt_set_invalid_parameter_handler.c
// compile with: /Zi /MTd
#include <stdio.h>
#include <stdlib.h>
#include <crtdbg.h>  // For _CrtSetReportMode

void myInvalidParameterHandler(const wchar_t* expression,
   const wchar_t* function, 
   const wchar_t* file, 
   unsigned int line, 
   uintptr_t pReserved)
{
   wprintf(L"Invalid parameter detected in function %s."
            L" File: %s Line: %d\n", function, file, line);
   wprintf(L"Expression: %s\n", expression);
   abort();
}


int main( )
{
   char* formatString;

   _invalid_parameter_handler oldHandler, newHandler;
   newHandler = myInvalidParameterHandler;
   oldHandler = _set_invalid_parameter_handler(newHandler);

   // Disable the message box for assertions.
   _CrtSetReportMode(_CRT_ASSERT, 0);

   // Call printf_s with invalid parameters.

   formatString = NULL;
   printf(formatString);
}
  
  

참고 항목

참조

보안이 향상 된 버전의 CRT 함수

errno, _doserrno, _sys_errlist, _sys_nerr