Partager via


_set_invalid_parameter_handler

Définit une fonction à appeler lorsque le CRT détecte un argument invalide.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Paramètres

  • [in] pNew
    Le pointeur sur le nouveau gestionnaire de paramètre non valide.

Valeur de retour

Pointeur vers le gestionnaire de paramètre non valide avant l'appel.

Notes

De nombreuses fonctions runtime C vérifient la validité des arguments passés à celles-ci. Si un argument invalide est passé, la fonction peut définir le numéro d'erreur errno ou retourner un code d'erreur. Dans ces cas là, le gestionnaire de paramètre non valide est également appelé. Cette fonction permet à ce gestionnaire d'etre affecté à une autre fonction. Une seule fonction à la fois peut être spécifiée en tant que gestionnaire des arguments invalides.

Lorsque l'infrastructure appelle la fonction de paramètre non valide, cela signifie généralement qu' une erreur non récupérable s'est produite. La fonction de paramètre non valide doit enregistrer toutes les données qu'elle peut avant de s'arreter. Elle ne doit pas redonner le contrôle à la fonction principale à moins que vous ne soyez sûr que l'erreur est récupérable.

La fonction gestionnaire de paramètre non valide doit avoir le prototype suivant :

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

Le premier est l'expression de l'argument. Le deuxième argument est le nom de la fonction dCRT, qui a reçu l'argument non valide. Le troisième argument est le nom de fichier dans la source CRT. Le quatrième argument est la ligne de ce dossier. Le dernier argument est réservé. Tous les paramètres ont la valeur NULL sauf si une version de débogage de la bibliothèque CRT est utilisée.

Configuration requise

Routine

En-tête requis

_set_invalid_parameter_handler

<stdlib.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

Dans l'exemple suivant, un gestionnaire d'erreurs de paramètre non valide est utilisé pour imprimer la fonction qui a reçu le paramètre non valide et les dossiers ainsi que les sources CRT. Lorsque la bibliothèque CRT de débogage est utilisée, les erreurs de paramètre non valide provoquent également une assertion, qui est désactivée dans cet exemple, qui utilise _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);
}
       

Voir aussi

Référence

Versions à la sécurité améliorée des fonctions CRT

errno, _doserrno, _sys_errlist et _sys_nerr