Freigeben über


_set_invalid_parameter_handler

Legt eine aufgerufen werden Funktion fest, wenn das CRT ein NULL-Argument erkennt.

_invalid_parameter_handler _set_invalid_parameter_handler(
   _invalid_parameter_handler pNew
);

Parameter

  • [in] pNew
    Der Funktionszeiger zum neuen Parameterhandler ungültigen.

Rückgabewert

Ein Zeiger auf ungültigen Parameterhandler vor dem Aufruf.

Hinweise

Viele C-Laufzeitfunktionen überprüfen die Gültigkeit von Argumenten, die an sie übergeben werden. Wenn ein ungültiges Argument übergeben wird, kann die Funktion die errno Fehlernummer festlegen oder einen Fehlercode zurückgegeben. In solchen Fällen wird der ungültige Parameterhandler ebenfalls aufgerufen. Diese Funktion können diesen in eine andere Funktion festgelegt werden, Handler. Nur eine Funktion kann als der ungültige Argumenthandler auf einmal angegeben werden.

Wenn das Framework die ungültige Parameter aufgerufen wird, bedeutet dies normalerweise, dass ein nicht wiederherstellbarer Fehler aufgetreten ist. Die fehlerhafte Parameter sollte alle Daten speichern, die sie und dann abbrechen kann. Sie sollte Steuerelement nicht der Hauptfunktion zurückgeben, es sei denn, Sie sicher sind, dass der Fehler wiederherstellbar ist.

Die fehlerhafte Parameterhandlerfunktion muss den folgenden Prototyp aufweisen:

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

Das erste Argument ist der Argumentausdruck. Das zweite Argument ist der Name der CRT-Funktion, die das ungültige Argument hat. Das dritte Argument wird der Dateiname in der CRT-Quelle. Das vierte Argument ist die Zeile in dieser Datei. Das letzte Argument ist reserviert. Alle Parameter haben den Wert NULL, es sei denn, eine Debugversion der CRT-Bibliothek verwendet wird.

Anforderungen

Routine

Erforderlicher Header

_set_invalid_parameter_handler

<stdlib.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

Im folgenden Beispiel wird ein ungültiger Parameterfehlerhandler verwendet, um die Funktion zu drucken, die den ungültigen Parameter und die Datei und die Zeile in CRT-Quellen hat. Wenn die CRT-Debugbibliothek verwendet wird, werden ungültige Parameterfehler auch eine Assertion aus, in diesem Beispiel mit _CrtSetReportMode deaktiviert wird.

// 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);
}
       

Siehe auch

Referenz

CRT-Funktionsversionen mit erweiterter Sicherheit

errno, _doserrno, _sys_errlist und _sys_nerr