_set_invalid_parameter_handler

Imposta una funzione da chiamare quando il CRT rileva un argomento non valido.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Parametri

  • [in] pNew
    Il puntatore a funzione al nuovo gestore non valido di parametro.

Valore restituito

Un puntatore al gestore non valido di parametro prima della chiamata.

Note

Molte funzioni di runtime del linguaggio C controllare la validità degli argomenti passati tra essi.Se un argomento non valido viene passato, la funzione possibile impostare errno il numero o un codice di errore restituito.In tali casi, il gestore non valido di parametro viene chiamato.Questa funzione consente il gestore da impostare in un'altra funzione.Solo una funzione può essere specificata come gestore non valido degli argomenti per volta.

Quando il framework chiama la funzione non valida di parametro, in genere significa che un errore in cui non è possibile il recupero si è verificato.La funzione non valida di parametro deve salvare tutti i dati che può quindi arrestare.Non deve restituire il controllo alla funzione principale a meno che non si ritenga che l'errore è reversibile.

La funzione di gestione non valida di parametro deve essere il prototipo indicato di seguito:

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

Il primo argomento è l'espressione dell'argomento.Il secondo argomento è il nome della funzione CRT che ha ricevuto argomento non valido.Il terzo argomento è il nome del file di origine CRT.Il quarto argomento è la riga nel file.l'ultimo argomento è riservato.I parametri sono tutti del valore NULL a meno che una versione di debug della libreria CRT venga utilizzata.

Requisiti

routine

Intestazione di associazione

_set_invalid_parameter_handler

<definito>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

Nell'esempio seguente, un gestore errori non valido di parametro viene utilizzato per stampare la funzione che ha ricevuto il parametro non valido e il file e la riga nei database di origine CRT.Quando la libreria CRT di debug viene utilizzata, gli errori non validi di parametro generano anche un'asserzione, che è disabilitato in questo esempio utilizzando _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);
}
  
  

Vedere anche

Riferimenti

Versioni con sicurezza Avanzate di funzioni CRT

errno, _doserrno, _sys_errlist e _sys_nerr