_invalid_parameter
, , _invalid_parameter_noinfo
_invalid_parameter_noinfo_noreturn
, ,_invoke_watson
Ces fonctions sont utilisées par la bibliothèque Runtime C pour gérer les paramètres non valides transmis aux fonctions de la bibliothèque CRT. Votre code peut également utiliser ces fonctions pour prendre en charge la gestion personnalisable ou par défaut des paramètres non valides.
Syntaxe
extern "C" void __cdecl
_invalid_parameter(
wchar_t const* const expression,
wchar_t const* const function_name,
wchar_t const* const file_name,
unsigned int const line_number,
uintptr_t const reserved);
extern "C" void __cdecl
_invalid_parameter_noinfo(void);
extern "C" __declspec(noreturn) void __cdecl
_invalid_parameter_noinfo_noreturn(void);
extern "C" __declspec(noreturn) void __cdecl
_invoke_watson(
wchar_t const* const expression,
wchar_t const* const function_name,
wchar_t const* const file_name,
unsigned int const line_number,
uintptr_t const reserved);
Paramètres
expression
Chaîne représentant l’expression de paramètre de code source qui n’est pas valide.
function_name
Nom de la fonction qui a appelé le gestionnaire.
file_name
Fichier de code source dans lequel le gestionnaire a été appelé.
line_number
Numéro de ligne dans le code source où le gestionnaire a été appelé.
reserved
Inutilisé.
Valeur retournée
Ces fonctions ne retournent pas de valeur. Les _invalid_parameter_noinfo_noreturn
fonctions et _invoke_watson
ne reviennent pas à l’appelant, et dans certains cas, _invalid_parameter
et _invalid_parameter_noinfo
peuvent ne pas revenir à l’appelant.
Notes
Quand des paramètres non valides sont passés aux fonctions de la bibliothèque runtime C, celles-ci appellent un gestionnaire de paramètres non valides, fonction qui peut être spécifiée par le programmeur pour effectuer plusieurs actions. Par exemple, il peut signaler le problème à l’utilisateur, écrire dans un journal, marquer un arrêt dans un débogueur, mettre fin au programme ou ne rien faire du tout. Si aucune fonction n’est spécifiée par le programmeur, un gestionnaire par défaut, _invoke_watson
, est appelé.
Par défaut, quand un paramètre non valide est identifié dans un code de débogage, les fonctions de la bibliothèque CRT appellent la fonction _invalid_parameter
à l’aide de paramètres détaillés. Dans un code sans débogage, la fonction _invalid_parameter_noinfo
est appelée, entraînant l’appel de la fonction _invalid_parameter
à l’aide de paramètres vides. Si la fonction de bibliothèque CRT sans débogage nécessite l’arrêt du programme, la fonction _invalid_parameter_noinfo_noreturn
est appelée, entraînant l’appel de la fonction _invalid_parameter
à l’aide de paramètres vides, suivi d’un appel de la fonction _invoke_watson
pour forcer l’arrêt du programme.
La fonction _invalid_parameter
vérifie si un gestionnaire de paramètres non valides défini par l’utilisateur a été défini et, si tel est le cas, elle l’appelle. Par exemple, si un gestionnaire local thread-local défini par l’utilisateur a été défini par un appel au set_thread_local_invalid_parameter_handler
thread actuel, il est appelé, puis la fonction retourne. Sinon, si un gestionnaire de paramètres global non valide défini par l’utilisateur a été défini par un appel à set_invalid_parameter_handler
, il est appelé, puis la fonction retourne. Sinon, le gestionnaire par défaut _invoke_watson
est appelé. Le comportement par défaut de _invoke_watson
consiste à arrêter le programme. Les gestionnaires définis par l’utilisateur peuvent arrêter le programme ou retourner le contrôle. Il est recommandé que les gestionnaires définis par l’utilisateur terminent le programme, sauf si la récupération est certaine.
Lorsque le gestionnaire _invoke_watson
par défaut est appelé, si le processeur prend en charge une __fastfail
opération, il est appelé à l’aide d’un paramètre et FAST_FAIL_INVALID_ARG
le processus se termine. Sinon, une exception d’échec rapide est déclenchée, qui peut être interceptée par un débogueur attaché. Si le processus est autorisé à continuer, il est arrêté par un appel à la fonction Windows TerminateProcess
à l’aide d’un état de code d’exception de STATUS_INVALID_CRUNTIME_PARAMETER
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Fonction | En-tête requis |
---|---|
_invalid_parameter , , _invalid_parameter_noinfo _invalid_parameter_noinfo_noreturn , ,_invoke_watson |
<corecrt.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Voir aussi
Référence de fonction alphabétique
_get_invalid_parameter_handler
, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler
, _set_thread_local_invalid_parameter_handler
Validation des paramètres