Sdílet prostřednictvím


_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_PARAMETERkó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