Condividi tramite


_set_invalid_parameter_handler

Imposta una funzione da chiamare quando 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 controllano la validità degli argomenti passati tra essi. Se un argomento non valido viene passato, la funzione può impostare il numero di errore errno o restituire un codice di errore. In tali casi, il gestore non valido di parametro viene chiamato. Questa funzione permette di impostare tale gestore a un'altra funzione. Solo una funzione per volta può essere specificata come gestore non valido dell'argomento.

Quando il framework chiama la funzione non valida di parametro, in genere significa che si è verificato un errore non recuperabile. La funzione di parametro non valido deve salvare tutti i dati che può e quindi arrestare. Non deve restituire il controllo alla funzione main a meno che non si sia certi che l'errore è recuperabile.

La funzione di gestione di parametro non valido deve avere il seguente prototipo:

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 l'argomento non valido. Il terzo argomento è il nome file nell'origine CRT. Il quarto argomento è la riga del file. L'ultimo argomento è riservato. I parametri hanno tutti il valore NULL a meno che una versione di debug della libreria CRT non venga utilizzata.

Requisiti

Routine

Intestazione obbligatoria

_set_invalid_parameter_handler

<stdlib.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.

Esempio

Nell'esempio seguente, un gestore errori di parametro non valido viene utilizzato per stampare la funzione che ha ricevuto il parametro non valido e il file e la riga nelle origini CRT. Quando la libreria CRT di debug viene utilizzata, gli errori di parametro non valido generano anche un'asserzione, che è disabilitata 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 avanzata delle funzioni CRT

errno, _doserrno, _sys_errlist, and _sys_nerr