_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

Informations de référence sur les fonctions alphabétiques
_get_invalid_parameter_handler, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler, _set_thread_local_invalid_parameter_handler
Validation des paramètres