Share via


_set_invalid_parameter_handler

Define uma função a ser chamada quando a CRT detecta um argumento inválido.

_invalid_parameter_handler _set_invalid_parameter_handler(
      _invalid_parameter_handler pNew
);

Parâmetros

  • [in]pNew
    O ponteiro de função para o novo manipulador de parâmetro inválido.

Valor de retorno

Um ponteiro para o manipulador de parâmetro inválido antes da telefonar.

Comentários

Muitas funções de time de execução C verifica a validade dos argumentos passados a eles.Se um argumento inválido for passado, a função pode conjunto o errno número do erro ou um código de erro de retorno. Em tais casos, também é chamado o manipulador de parâmetro inválido.Essa função permite que esse manipulador seja definida como outra função.Apenas uma função pode ser especificada sistema autônomo o manipulador de argumento inválido ao mesmo time.

A função de manipulador de parâmetro inválido deve ter o seguinte protótipo:

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

O primeiro argumento é a expressão de argumento.O segundo argumento é o nome da função CRT que recebeu o argumento inválido.O terceiro argumento é nome de arquivo na fonte do CRT.O quarto argumento é a linha nesse arquivo.O último argumento está reservado.Os parâmetros todos têm o valor NULL a menos que seja usada uma versão de depurar da biblioteca CRT.

Requisitos

Rotina

Cabeçalho necessário

_set_invalid_parameter_handler

<stdlib.h>

Para obter mais informações de compatibilidade, consulte Compatibility na introdução.

Exemplo

No exemplo a seguir uma rotina de tratamento de erros de parâmetro inválido é usada para imprimir a função que recebeu o parâmetro inválido e o arquivo e a linha em fontes de CRT.Quando é usada da biblioteca CRT de depurar, erros de parâmetro inválido também lançam uma declaração, que é desabilitado neste exemplo usando _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);
}


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);
}

Invalid parameter detected in function printf. File: printf.c Line: 54 Expression: (format != NULL)

Consulte também

Referência

Versões segurança avançado de funções de CRT

errno, _doserrno, _sys_errlist e _sys_nerr