_set_invalid_parameter_handler
Legt eine Funktion fest, die aufgerufen werden soll, wenn die CRT ein ungültiges Argument erkennt.
_invalid_parameter_handler _set_invalid_parameter_handler(
_invalid_parameter_handler pNew
);
Parameter
- [in] pNew
Der Funktionszeiger ungültiger Parameter an den neuen Ereignishandler.
Rückgabewert
Ein Zeiger auf den ungültigen Parameter Klassenhandler vor dem Aufruf.
Hinweise
Viele C-Laufzeitfunktionen überprüfen Sie die Gültigkeit der Argumente, die an sie übergeben werden.Wenn ein ungültiges Argument übergeben wird, kann die Funktion die errno Fehlernummer festgelegt oder einen Fehlercode zurückgeben.In solchen Fällen wird der ungültige Parameter auch Handler aufgerufen.Diese Funktion ermöglicht es diesen in eine andere Funktion Handler festgelegt werden soll.Nur eine Funktion kann als Argument für ungültige auf einmal angegeben werden.
Wenn das Framework die Funktion für ungültige Parameter aufgerufen wird, bedeutet dies normalerweise, dass ein nonrecoverable Fehler aufgetreten ist.Die Funktion für ungültige Parameter sollte alle Daten, die sie speichern und dann abbrechen kann.Er sollte Steuerelement nicht an die Hauptfunktion zurückgegeben, es sei denn, Sie sicher sind, dass der Fehler wiederherstellbar sind.
Die ungültige Parameter muss handlerfunktion 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 Argument Ausdruck.Das zweite Argument ist der Name der CRT-Funktion, die das ungültige Argument empfangen hat.Durch 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 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 finden Sie unter Kompatibilität Kompatibilität in der Einführung.
Beispiel
Im folgenden Beispiel wird ein ungültiger Parameter fehlerhandler verwendet, um die Funktion zu drucken, die den ungültigen Parameter und die Datei und die Zeile in CRT-Quellen empfangen hat.Wenn der CRT-Debugbibliothek ungültige Parameter verwendet wird, lösen Fehler auch eine Assertion aus, die in diesem Beispiel für die Verwendung _CrtSetReportModedeaktiviert ist.
// 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);
}