_invalid_parameter
, , _invalid_parameter_noinfo
_invalid_parameter_noinfo_noreturn
_invoke_watson
Diese Funktionen werden von der C-Laufzeitbibliothek verwendet, um ungültige Parameter zu behandeln, die an CRT-Bibliotheksfunktionen übergeben werden. Ihr Code verwendet diese Funktionen möglicherweise auch zur Unterstützung der Standard- oder anpassbaren Behandlung der ungültigen Parameter.
Syntax
extern "C" void __cdecl
_invalid_parameter(
wchar_t const* const expression,
wchar_t const* const function_name,
wchar_t const* const file_name,
unsigned int const line_number,
uintptr_t const reserved);
extern "C" void __cdecl
_invalid_parameter_noinfo(void);
extern "C" __declspec(noreturn) void __cdecl
_invalid_parameter_noinfo_noreturn(void);
extern "C" __declspec(noreturn) void __cdecl
_invoke_watson(
wchar_t const* const expression,
wchar_t const* const function_name,
wchar_t const* const file_name,
unsigned int const line_number,
uintptr_t const reserved);
Parameter
expression
Eine Zeichenfolge, die den ungültigen Quellcodeparameterausdruck darstellt.
function_name
Der Name der Funktion, die den Handler aufgerufen hat.
file_name
Die Quellcodedatei, in der der Handler aufgerufen wurde.
line_number
Die Zeilennummer im Quellcode, in der der Handler aufgerufen wurde.
reserved
Nicht verwendet.
Rückgabewert
Diese Funktionen geben keinen Wert zurück. Die _invalid_parameter_noinfo_noreturn
Funktionen kehren _invoke_watson
nicht zum Aufrufer zurück, und in einigen Fällen _invalid_parameter
kehren sie _invalid_parameter_noinfo
möglicherweise nicht zum Aufrufer zurück.
Hinweise
Wenn Funktionen der C-Laufzeitbibliothek ungültige Parameter übergeben, rufen die Bibliotheksfunktionen einen Handler für ungültige Parameter auf, eine Funktion, die möglicherweise vom Programmierer angegeben wird, um mehrere Aufgaben auszuführen. Es kann dem Benutzer möglicherweise das Problem melden, in ein Protokoll schreiben, einen Debugger anhalten, das Programm beenden oder gar nichts machen. Wenn keine Funktion durch den Programmierer angegeben wird, wird ein Standardhandler, _invoke_watson
, aufgerufen.
Wenn standardmäßig ein ungültiger Parameter im Debugcode identifiziert wird, rufen Funktionen der CRT-Bibliothek die Funktion _invalid_parameter
mithilfe von ausführlichen Parametern auf. Im Nichtdebugcode wird die _invalid_parameter_noinfo
-Funktion aufgerufen, welche die _invalid_parameter
-Funktion mithilfe von leeren Parametern aufruft. Wenn die Nichtdebug-CRT-Bibliotheksfunktion eine Programmterminierung benötigt, wird die _invalid_parameter_noinfo_noreturn
-Funktion aufgerufen, welche die _invalid_parameter
-Funktion mithilfe von leeren Parametern aufruft, gefolgt von einem Aufruf der _invoke_watson
-Funktion, um die Programmterminierung zu erzwingen.
Die _invalid_parameter
-Funktion überprüft, ob ein benutzerdefinierter ungültiger Parametertyphandler festgelegt wurde, und wenn ja, ruft sie ihn auf. Wenn beispielsweise ein benutzerdefinierter threadlokaler Handler durch einen Aufruf set_thread_local_invalid_parameter_handler
im aktuellen Thread festgelegt wurde, wird er aufgerufen, und die Funktion wird zurückgegeben. Andernfalls wird die Funktion zurückgegeben, wenn ein benutzerdefinierter, benutzerdefinierter ungültiger Parameterhandler durch einen Aufruf set_invalid_parameter_handler
festgelegt wurde. Andernfalls wird der standardmäßige Handler _invoke_watson
aufgerufen. Das Standardverhalten von _invoke_watson
ist das Beenden des Programms. Benutzerdefinierte Handler werden möglicherweise beendet oder zurückgegeben. Es wird empfohlen, dass benutzerdefinierte Handler das Programm beenden, es sei denn, die Wiederherstellung ist sicher.
Wenn der Standardhandler _invoke_watson
aufgerufen wird, wird er mithilfe eines Parameters FAST_FAIL_INVALID_ARG
aufgerufen, und der Prozess wird beendet, wenn der Prozessor einen __fastfail
Vorgang unterstützt. Andernfalls wird eine Fast-Fail-Ausnahme ausgelöst, die durch einen angefügten Debugger abgefangen wird. Wenn der Vorgang fortgesetzt werden darf, wird er durch einen Aufruf der Windows-Funktion TerminateProcess
mithilfe eines Ausnahmecodestatus von STATUS_INVALID_CRUNTIME_PARAMETER
.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Funktion | Erforderlicher Header |
---|---|
_invalid_parameter , , _invalid_parameter_noinfo _invalid_parameter_noinfo_noreturn _invoke_watson |
<corecrt.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Weitere Informationen
Alphabetische Funktionsreferenz
_get_invalid_parameter_handler
, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler
, _set_thread_local_invalid_parameter_handler
Parameterüberprüfung