Validación de parámetrosParameter Validation

La mayoría de las funciones de CRT con seguridad mejorada, y muchas que no, validan sus parámetros para cosas como la comprobación de punteros para valores NULL, que los enteros se encuentran en un intervalo válido o que los valores de enumeración son válidos.Most of the security-enhanced CRT functions, and many that aren't, validate their parameters for things like checking pointers for NULL, that integers fall into a valid range, or that enumeration values are valid. Si se encuentra un parámetro no válido, se llama al controlador de parámetros no válidos.If an invalid parameter is found, the invalid parameter handler is called.

Rutina de controlador de parámetros no válidosInvalid Parameter Handler Routine

Cuando una función de biblioteca en tiempo de ejecución de C detecta un parámetro no válido, captura información sobre el error y, a continuación, llama a una macro que contiene una función de distribución de controlador de parámetros no válida.When a C Runtime Library function detects an invalid parameter, it captures some information about the error, and then calls a macro that wraps an invalid parameter handler dispatch function. Que será uno de _invalid_parameter, _invalid_parameter_noinfoo _invalid_parameter_noinfo_noreturn.Which will be one of _invalid_parameter, _invalid_parameter_noinfo, or _invalid_parameter_noinfo_noreturn. La función de distribución a la que se llama depende de si el código es, respectivamente, una compilación de depuración, una compilación comercial o el error no se considera recuperable.Which dispatch function is called depends on whether your code is, respectively, a debug build, a retail build, or the error isn't considered recoverable.

En las compilaciones de depuración, la macro de parámetros no válidos normalmente genera una aserción con errores y un punto de interrupción del depurador antes de llamar a la función de envío.In debug builds, the invalid parameter macro usually raises a failed assertion and a debugger breakpoint before the dispatch function is called. Cuando se ejecuta el código, se puede informar al usuario de la aserción en un cuadro de diálogo que tenga las opciones "anular", "Reintentar" y "continuar", o similares, según el sistema operativo y la versión de la biblioteca en tiempo de ejecución.When the code is executed, the assertion may be reported to the user in a dialog box that has "Abort", "Retry", and "Continue" or similar choices depending on the operating system and runtime library version. Estas opciones permiten al usuario finalizar inmediatamente el programa, asociar un depurador o dejar que el código existente siga ejecutándose, lo que llama a la función de envío.These options allow the user to immediately terminate the program, to attach a debugger, or to let the existing code continue to run which calls the dispatch function.

La función de distribución del controlador de parámetros no válidos llama al controlador de parámetros no válidos asignado actualmente.The invalid parameter handler dispatch function calls the currently assigned invalid parameter handler. De forma predeterminada, el parámetro no válido llama a _invoke_watson , que hace que la aplicación se cierre y genere un minivolcado.By default, the invalid parameter calls _invoke_watson, which causes the application to close and generate a mini-dump. Si lo habilita el sistema operativo, un cuadro de diálogo pregunta al usuario si desea enviar el volcado de memoria a Microsoft para su análisis.If enabled by the operating system, a dialog box asks the user if they want to send the crash dump to Microsoft for analysis.

Puede cambiar este comportamiento mediante las funciones _set_invalid_parameter_handler o _set_thread_local_invalid_parameter_handler para establecer el controlador de parámetros no válidos en su propia función.You can change this behavior by using the functions _set_invalid_parameter_handler or _set_thread_local_invalid_parameter_handler to set the invalid parameter handler to your own function. Si la función que especifique no finaliza la aplicación, el control vuelve a la función que recibe los parámetros no válidos.If the function you specify does not terminate the application, control is returned to the function that received the invalid parameters. En CRT, estas funciones normalmente detendrán la ejecución de la función, establecerán errno un código de error y devolverán un código de error.In the CRT, these functions will normally stop function execution, set errno to an error code, and return an error code. En muchos casos, el errno valor y el valor devuelto son ambos EINVAL , para indicar un parámetro no válido.In many cases, the errno value and the return value are both EINVAL, to indicate an invalid parameter. En algunos casos, se devuelve un código de error más específico, como, por ejemplo, EBADF para un puntero de archivo incorrecto que se pasa como parámetro.In some cases, a more specific error code is returned, such as EBADF for a bad file pointer passed in as a parameter.

Para obtener más información sobre errno, consulte errno, _doserrno, _sys_errlist y _sys_nerr.For more information on errno, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Consulte tambiénSee also

Características de seguridad de CRTSecurity Features in the CRT
Características de la biblioteca CRTCRT Library Features