Walidacja parametru

Większość funkcji CRT rozszerzonych zabezpieczeń i wiele, które nie są, zweryfikuj ich parametry dla elementów, takich jak wskaźniki sprawdzania dla NULL, że liczby całkowite należą do prawidłowego zakresu lub że wartości wyliczenia są prawidłowe. Jeśli zostanie znaleziony nieprawidłowy parametr, wywoływana jest nieprawidłowa procedura obsługi parametrów.

Nieprawidłowa procedura obsługi parametrów

Gdy funkcja biblioteki środowiska uruchomieniowego języka C wykryje nieprawidłowy parametr, przechwytuje pewne informacje o błędzie, a następnie wywołuje makro, które opakowuje nieprawidłową funkcję wysyłania procedury obsługi parametrów. Będzie to jeden z _invalid_parameterelementów , _invalid_parameter_noinfolub _invalid_parameter_noinfo_noreturn. Która funkcja dispatch jest wywoływana, zależy od tego, czy kod jest odpowiednio kompilacją debugowania, kompilacją detaliczną, czy błędem nie można odzyskać.

W kompilacjach debugowania nieprawidłowe makro parametru zwykle zgłasza niepowodzenie asercji i punkt przerwania debugera przed wywołaniem funkcji dispatch. Po uruchomieniu kodu asercji można zgłosić użytkownikowi w oknie dialogowym zawierającym "Przerwij", "Ponów próbę" i "Kontynuuj" lub podobne opcje, które zależą od systemu operacyjnego i wersji CRT. Te opcje umożliwiają użytkownikowi natychmiastowe zakończenie programu, dołączenie debugera lub zezwolenie na kontynuowanie działania istniejącego kodu, który wywołuje funkcję dispatch.

Nieprawidłowa funkcja wysyłania obsługi parametrów wywołuje aktualnie przypisaną nieprawidłową procedurę obsługi parametrów. Domyślnie nieprawidłowy parametr wywołuje _invoke_watsonmetodę , co powoduje zamknięcie aplikacji i wygenerowanie mini-zrzutu. Jeśli system operacyjny jest włączony, w oknie dialogowym zostanie wyświetlony monit o wysłanie zrzutu awaryjnego do firmy Microsoft w celu analizy.

To zachowanie można zmienić przy użyciu funkcji _set_invalid_parameter_handler lub _set_thread_local_invalid_parameter_handler ustawić nieprawidłową procedurę obsługi parametrów na własną funkcję. Jeśli określona funkcja nie zakończy działania aplikacji, kontrolka zostanie zwrócona do funkcji, która odebrała nieprawidłowe parametry. W języku CRT te funkcje zwykle zatrzymują wykonywanie funkcji, ustawiają errno kod błędu i zwracają kod błędu. W wielu przypadkach errno wartość i wartość zwracana to , EINVALaby wskazać nieprawidłowy parametr. W niektórych przypadkach zwracany jest bardziej szczegółowy kod błędu, taki jak EBADF w przypadku nieprawidłowego wskaźnika pliku przekazanego jako parametr.

Aby uzyskać więcej informacji na temat errnoprogramu , zobaczerrno , _doserrno, _sys_errlisti _sys_nerr.

Zobacz też

Funkcje zabezpieczeń w narzędziu CRT
Pliki C runtime (CRT) i C++ Standard Library (STL) .lib