_invalid_parameter
, _invalid_parameter_noinfo
, , _invalid_parameter_noinfo_noreturn
_invoke_watson
Tyto funkce používá knihovna modulu runtime jazyka C ke zpracování neplatných parametrů předaných funkcím knihovny CRT. Váš kód může tyto funkce použít také k podpoře výchozího nebo přizpůsobitelného zpracování neplatných parametrů.
Syntaxe
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);
Parametry
expression
Řetězec představující výraz parametru zdrojového kódu, který není platný.
function_name
Název funkce, která volala obslužnou rutinu.
file_name
Zdrojový soubor kódu, kde byla volána obslužná rutina.
line_number
Číslo řádku ve zdrojovém kódu, kde byla volána obslužná rutina.
reserved
Nepoužívá se.
Vrácená hodnota
Tyto funkce nevrací hodnotu. _invoke_watson
Funkce _invalid_parameter_noinfo_noreturn
se nevrátí do volajícího a v některých případech _invalid_parameter
se _invalid_parameter_noinfo
nemusí vrátit k volajícímu.
Poznámky
Pokud jsou funkce knihovny modulu runtime jazyka C předány neplatné parametry, funkce knihovny volají neplatnou obslužnou rutinu parametrů, funkci, kterou může programátor určit, aby udělal některou z několika věcí. Může například nahlásit problém uživateli, zapisovat do protokolu, přerušit ladicí program, ukončit program nebo vůbec nic dělat. Pokud programátor nezadá žádnou funkci, volá se výchozí obslužná rutina _invoke_watson
.
Pokud je ve výchozím nastavení identifikovaný neplatný parametr v kódu ladění, funkce knihovny CRT funkci volají _invalid_parameter
pomocí podrobných parametrů. V neladicím kódu _invalid_parameter_noinfo
je volána funkce, která volá _invalid_parameter
funkci pomocí prázdných parametrů. Pokud neladit funkce knihovny CRT vyžaduje ukončení programu, _invalid_parameter_noinfo_noreturn
volá se funkce, která volá _invalid_parameter
funkci pomocí prázdných parametrů a následně volání _invoke_watson
funkce k vynucení ukončení programu.
Funkce _invalid_parameter
zkontroluje, jestli byla nastavena uživatelsky definovaná neplatná obslužná rutina parametru, a pokud ano, volá ji. Pokud byla například uživatelsky definovaná obslužná rutina thread-local nastavena voláním set_thread_local_invalid_parameter_handler
v aktuálním vlákně, volá se, funkce vrátí. Jinak pokud byla obslužná rutina globálního neplatného parametru definovaná uživatelem nastavena voláním set_invalid_parameter_handler
, zavolá se, vrátí funkce. Jinak se volá výchozí obslužná rutina _invoke_watson
. Výchozím chováním _invoke_watson
je ukončení programu. Uživatelem definované obslužné rutiny se můžou ukončit nebo vrátit. Doporučujeme, aby obslužné rutiny definované uživatelem ukončily program, pokud není jisté obnovení.
Pokud je volána výchozí obslužná rutina _invoke_watson
, pokud procesor podporuje __fastfail
operaci, vyvolá se pomocí parametru FAST_FAIL_INVALID_ARG
a proces se ukončí. V opačném případě je vyvolána rychlá výjimka selhání, která může být zachycena připojeným ladicím programem. Pokud proces může pokračovat, ukončí se voláním funkce Windows TerminateProcess
pomocí stavu STATUS_INVALID_CRUNTIME_PARAMETER
kódu výjimky .
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Function | Požadovaný hlavičkový soubor |
---|---|
_invalid_parameter , _invalid_parameter_noinfo , , _invalid_parameter_noinfo_noreturn _invoke_watson |
<corecrt.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Abecední odkaz na funkci
_get_invalid_parameter_handler
, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler
, _set_thread_local_invalid_parameter_handler
Ověření parametru