Sdílet prostřednictvím


Ověřování parametrů

Většinafunkcích funkcí (CRT) a mnoho funkcí, které nejsou, ověřují jejich parametry pro věci, jako je kontrola ukazatelů NULL, že celá čísla spadají do platné oblasti nebo jsou platné hodnoty výčtu. Pokud se najde neplatný parametr, volá se neplatná obslužná rutina parametru.

Neplatná rutina obslužné rutiny parametru

Když funkce knihovny modulu runtime jazyka C zjistí neplatný parametr, zachytí některé informace o chybě a potom zavolá makro, které zabalí neplatnou funkci odeslání obslužné rutiny parametru. Která bude jednou z _invalid_parameter, _invalid_parameter_noinfonebo _invalid_parameter_noinfo_noreturn. Která funkce odeslání je volána, závisí na tom, jestli je kód sestavení ladění, maloobchodní sestavení nebo chyba považována za obnovitelnou.

V buildech ladění makro neplatných parametrů obvykle vyvolá neúspěšné kontrolní výrazy a zarážku ladicího programu před voláním funkce odeslání. Když se kód spustí, může být kontrolní výraz hlášen uživateli v dialogovém okně, které má hodnotu "Abort", "Opakovat" a "Pokračovat" nebo podobné volby, které závisí na operačním systému a verzi CRT. Tyto možnosti uživateli umožňují okamžitě ukončit program, připojit ladicí program nebo nechat stávající kód běžet, který volá funkci dispatch.

Funkce dispatch obslužné rutiny neplatných parametrů volá aktuálně přiřazenou neplatnou obslužnou rutinu parametru. Ve výchozím nastavení neplatné volání _invoke_watsonparametru , což způsobí, že aplikace zavře a vygeneruje mini-dump. Pokud operační systém povolí, zobrazí se uživateli dialogové okno s dotazem, jestli chce odeslat výpis stavu systému do Microsoftu k analýze.

Toto chování můžete změnit pomocí funkcí _set_invalid_parameter_handler nebo _set_thread_local_invalid_parameter_handler nastavením neplatné obslužné rutiny parametru na vlastní funkci. Pokud zadaná funkce aplikaci neukončí, vrátí se ovládací prvek do funkce, která přijala neplatné parametry. V CRT tyto funkce obvykle zastaví provádění funkce, nastaví errno na kód chyby a vrátí kód chyby. V mnoha případech errno jsou hodnota a návratová hodnota oba EINVAL, které označují neplatný parametr. V některých případech se vrátí konkrétnější kód chyby, například EBADF chybný ukazatel souboru předaný jako parametr.

Další informace o errno, vizerrno , _doserrno, _sys_errlist, a _sys_nerr.

Viz také

Funkce zabezpečení v CRT
Soubory C runtime (CRT) a standardní knihovny C++ (STL) .lib