Validation de paramètreParameter Validation

La plupart des fonctions CRT avec sécurité avancée et de nombreuses fonctions préexistantes valident leurs paramètres.Most of the security-enhanced CRT functions and many of the preexisting functions validate their parameters. Elles peuvent notamment rechercher les pointeurs de valeur NULL, vérifier que les entiers se trouvent dans une plage valide ou encore vérifier que les valeurs d’énumération sont valides.This could include checking pointers for NULL, checking that integers fall into a valid range, or checking that enumeration values are valid. Quand un paramètre non valide est trouvé, son gestionnaire s’exécute.When an invalid parameter is found, the invalid parameter handler is executed.

Routine du gestionnaire du paramètre non valideInvalid Parameter Handler Routine

Quand une fonction de la bibliothèque Runtime C détecte un paramètre non valide, elle capture des informations sur l’erreur, puis appelle une macro qui inclut une fonction de distribution du gestionnaire du paramètre non valide, du type _invalid_parameter, _invalid_parameter_noinfo ou _invalid_parameter_noinfo_noreturn.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, one of _invalid_parameter, _invalid_parameter_noinfo, or _invalid_parameter_noinfo_noreturn. La fonction de distribution appelée varie selon que votre code est, respectivement, une version Debug, une version commerciale ou que l’erreur est n’est pas considérée comme récupérable.The dispatch function called depends on whether your code is, respectively, a debug build, a retail build, or the error is not considered recoverable.

Dans les versions Debug, la macro du paramètre non valide génère généralement un échec d’assertion et un point d’arrêt du débogueur est appelé avant la fonction de distribution.In Debug builds, the invalid parameter macro usually raises a failed assertion and a debugger breakpoint before the dispatch function is called. Quand le code est exécuté, l’assertion peut être signalée à l’utilisateur dans une boîte de dialogue contenant une option « Annuler », « Réessayer » et « Continuer » ou des choix similaires, selon le système d’exploitation et la version de la bibliothèque Runtime.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. Ces options permettent à l’utilisateur d’arrêter immédiatement le programme, d’attacher un débogueur ou de laisser le code existant continuer de s’exécuter, ce qui appelle la fonction de distribution.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 fonction de distribution du gestionnaire du paramètre non valide appelle à son tour le gestionnaire du paramètre non valide actuellement affecté.The invalid parameter handler dispatch function in turn calls the currently assigned invalid parameter handler. Par défaut, le paramètre non valide appelle _invoke_watson qui entraîne le blocage de l’application, autrement dit, son arrêt et la génération d’un minidump.By default, the invalid parameter calls _invoke_watson which causes the application to "crash," that is, terminate and generate a mini-dump. Si le système d’exploitation le permet, une boîte de dialogue invite l’utilisateur à indiquer s’il veut charger le vidage sur incident à destination de Microsoft à des fins d’analyse.If enabled by the operating system, a dialog box asks the user if they want to load the crash dump to Microsoft for analysis.

Vous pouvez modifier ce comportement à l’aide des fonctions _set_invalid_parameter_handler ou _set_thread_local_invalid_parameter_handler pour définir le gestionnaire du paramètre non valide sur votre propre fonction.This behavior can be changed 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 fonction que vous spécifiez n’arrête pas l’application, le contrôle est retourné à la fonction qui a reçu les paramètres non valides.If the function you specify does not terminate the application, control is returned to the function that received the invalid parameters. Dans la bibliothèque CRT, ces fonctions arrêtent normalement l’exécution de la fonction, définissent errno sur un code d’erreur et retournent un code d’erreur.In the CRT, these functions will normally cease function execution, set errno to an error code, and return an error code. Dans de nombreux cas, la valeur errno et la valeur de retour correspondent toutes les deux à EINVAL, ce qui indique un paramètre non valide.In many cases, the errno value and the return value are both EINVAL, indicating an invalid parameter. Dans certains cas, un code d’erreur plus spécifique est retourné, tel que EBADF pour un pointeur de fichier incorrect passé en tant que paramètre.In some cases, a more specific error code is returned, such as EBADF for a bad file pointer passed in as a parameter. Pour plus d’informations sur errno, consultez errno, _doserrno, _sys_errlist et _sys_nerr.For more information on errno, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Voir aussiSee also

Fonctionnalités de sécurité dans la bibliothèque CRTSecurity Features in the CRT
Fonctionnalités de bibliothèque CRTCRT Library Features