Sprawdzanie poprawności parametruParameter Validation

Większość funkcji CRT z rozszerzonymi zabezpieczeniami i wielu, które nie, sprawdzają poprawność ich parametrów dla elementów, takich jak sprawdzanie wskaźników dla wartości null, liczby całkowite mieszczą się w prawidłowym zakresie lub że wartości wyliczenia są prawidłowe.Most of the security-enhanced CRT functions, and many that aren't, validate their parameters for things like checking pointers for NULL, that integers fall into a valid range, or that enumeration values are valid. W przypadku znalezienia nieprawidłowego parametru zostanie wywołana procedura obsługi nieprawidłowego parametru.If an invalid parameter is found, the invalid parameter handler is called.

Nieprawidłowa procedura procedury obsługi parametrówInvalid Parameter Handler Routine

Gdy funkcja biblioteki środowiska uruchomieniowego języka C wykrywa nieprawidłowy parametr, przechwytuje pewne informacje o błędzie, a następnie wywołuje makro, które otacza funkcję wysyłania procedury obsługi nieprawidłowego parametru.When a C Runtime Library function detects an invalid parameter, it captures some information about the error, and then calls a macro that wraps an invalid parameter handler dispatch function. Będzie to jeden z _invalid_parameter, _invalid_parameter_noinfolub _invalid_parameter_noinfo_noreturn.Which will be one of _invalid_parameter, _invalid_parameter_noinfo, or _invalid_parameter_noinfo_noreturn. Funkcja wysyłania wywoływana jest zależna od tego, czy kod jest odpowiednio, Kompilacja debugowania, kompilacja detaliczna lub błąd nie jest uważany za odzyskiwalny.Which dispatch function is called depends on whether your code is, respectively, a debug build, a retail build, or the error isn't considered recoverable.

W kompilacjach debugowania makro nieprawidłowego parametru zazwyczaj wywołuje nieudane potwierdzenie i punkt przerwania debugera przed wywołaniem funkcji wysyłania.In debug builds, the invalid parameter macro usually raises a failed assertion and a debugger breakpoint before the dispatch function is called. Gdy kod jest wykonywany, potwierdzenie może zostać zgłoszone użytkownikowi w oknie dialogowym zawierającym "Abort", "ponów" i "Kontynuuj" lub podobne opcje w zależności od systemu operacyjnego i wersji biblioteki środowiska uruchomieniowego.When the code is executed, the assertion may be reported to the user in a dialog box that has "Abort", "Retry", and "Continue" or similar choices depending on the operating system and runtime library version. Te opcje umożliwiają użytkownikowi natychmiastowe zakończenie działania programu, w celu dołączenia debugera lub poinformowanie o istniejącym kodzie, który wywołuje funkcję wysyłania.These options allow the user to immediately terminate the program, to attach a debugger, or to let the existing code continue to run which calls the dispatch function.

Funkcja wysyłania nieprawidłowego parametru wywołuje aktualnie przypisaną procedurę obsługi nieprawidłowego parametru.The invalid parameter handler dispatch function calls the currently assigned invalid parameter handler. Domyślnie nieprawidłowe wywołania parametrów _invoke_watson , które powodują zamknięcie aplikacji i generują miniy zrzut.By default, the invalid parameter calls _invoke_watson, which causes the application to close and generate a mini-dump. Jeśli jest włączona przez system operacyjny, okno dialogowe monituje użytkownika o wysłanie zrzutu awaryjnego do firmy Microsoft w celu przeprowadzenia analizy.If enabled by the operating system, a dialog box asks the user if they want to send the crash dump to Microsoft for analysis.

Można zmienić to zachowanie przy użyciu funkcji _set_invalid_parameter_handler lub _set_thread_local_invalid_parameter_handler , aby ustawić procedurę obsługi nieprawidłowego parametru na własną funkcję.You can change this behavior by using the functions _set_invalid_parameter_handler or _set_thread_local_invalid_parameter_handler to set the invalid parameter handler to your own function. Jeśli określona funkcja nie kończy działanie aplikacji, formant jest zwracany do funkcji, która otrzymała nieprawidłowe parametry.If the function you specify does not terminate the application, control is returned to the function that received the invalid parameters. W CRT te funkcje zwykle zatrzymają wykonywanie funkcji, ustawimy errno Kod błędu i zwracają kod błędu.In the CRT, these functions will normally stop function execution, set errno to an error code, and return an error code. W wielu przypadkach errno wartość i wartość zwracana są oba EINVAL , aby wskazać nieprawidłowy parametr.In many cases, the errno value and the return value are both EINVAL, to indicate an invalid parameter. W niektórych przypadkach zwracany jest bardziej szczegółowy kod błędu, taki jak EBADF dla nieprawidłowego wskaźnika pliku przekazana jako parametr.In some cases, a more specific error code is returned, such as EBADF for a bad file pointer passed in as a parameter.

Aby uzyskać więcej informacji na temat errno , zobacz errno, _doserrno, _sys_errlist i _sys_nerr.For more information on errno, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Zobacz teżSee also

Funkcje zabezpieczeń w CRTSecurity Features in the CRT
Funkcje biblioteki CRTCRT Library Features