Share via


_set_invalid_parameter_handler

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

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Paramètres

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

Valeur de retour

Un pointeur vers le gestionnaire de paramètre non valide avant l'appel à.

Notes

De nombreuses fonctions runtime C permettent la validité des arguments passés à eux.Si un argument non valide est passé, la fonction peut définir le numéro d'erreur d' errno ou retourner un code d'erreur.Dans ce cas, le gestionnaire de paramètre non valide est également appelé.cette fonction permet ce gestionnaire à définir à une autre fonction.Seule une fonction peut être spécifiée comme gestionnaire d'argument non valide à la fois.

Lorsque l'infrastructure appelle la fonction de paramètre non valide, cela signifie habituellement qu'une erreur qui ne permettent aucune récupération s'est produite.La fonction de paramètre non valide doit enregistrer toutes les données qu'il peut et en veille sur.Il ne doit pas retourner le contrôle à la fonction principale sauf si vous êtes sûr que l'erreur soit 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 argument est l'expression d'argument.Le deuxième argument est le nom de la fonction CRT 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 qui fichier.le dernier argument est réservé.Tous les paramètres ont la valeur NULL à moins qu'une version debug 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 de 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 sources de fichier et CRT d'entrée ligne.Lorsque la bibliothèque CRT de débogage est utilisée, les erreurs de paramètre non valide lèvent également une assertion, qui est désactivée dans cet exemple à _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 de sécurité Améliorées des fonctions CRT

errno, _doserrno, _sys_errlist, et _sys_nerr