_set_invalid_parameter_handler

Establece una función que se va a CRT detecta un argumento no válido.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Parámetros

  • [in] pNew
    El puntero a función al nuevo controlador no válido del parámetro.

Valor devuelto

Un puntero al controlador no válido de parámetro antes de la llamada.

Comentarios

Muchas funciones de c En tiempo de ejecución comprueba la validez de los argumentos pasados a ellos.Si se pasa un argumento no válido, la función puede establecer el número de error de errno o devolver un código de error.En estos casos, el controlador no válido de parámetro también.Esta función permite establecer a ese controlador a otra función.Sólo una función se puede especificar como el controlador no válido del argumento al mismo tiempo.

Cuando el marco de trabajo llama a la función no válida de parámetro, generalmente significa que un error nonrecoverable.La función no válida del parámetro debe guardar los datos que pueda a continuación null.No debe devolver el control a la función principal a menos que esté seguro de que el error es recuperable.

La función no válida del controlador de parámetros debe tener el siguiente prototipo:

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

El primer argumento es la expresión del argumento.El segundo argumento es el nombre de la función CRT que recibió el argumento no válido.el tercer argumento es el nombre de archivo en el origen de CRT.El cuarto argumento es la línea de ese archivo.Se reserva el último argumento.Los parámetros todos tienen el valor NULL a menos que una versión de depuración de la biblioteca CRT se utilice.

Requisitos

rutina

Encabezado necesario

_set_invalid_parameter_handler

<stdlib.h>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

En el ejemplo siguiente, se utiliza un controlador de errores no válido de parámetro para imprimir la función que recibió el parámetro no válido y el archivo y la línea en los orígenes de CRT.Cuando se utiliza la biblioteca CRT de depuración, los errores no válidos del parámetro también produce una aserción, que está deshabilitada en este ejemplo mediante _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);
}
  
  

Vea también

Referencia

Versiones Seguridad- Mejoradas de funciones CRT

errno, _doserrno, _sys_errlist, y _sys_nerr