_invalid_parameter, _invalid_parameter_noinfo, _invalid_parameter_noinfo_noreturn, _invoke_watson

Te funkcje są używane przez bibliotekę środowiska uruchomieniowego języka C do obsługi nieprawidłowych parametrów przekazywanych do funkcji biblioteki CRT. Kod może również używać tych funkcji do obsługi domyślnej lub dostosowywalnej obsługi nieprawidłowych parametrów.

Składnia

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
Ciąg reprezentujący wyrażenie parametru kodu źródłowego, które nie jest prawidłowe.

function_name
Nazwa funkcji, która nazwała procedurę obsługi.

file_name
Plik kodu źródłowego, w którym wywoływano procedurę obsługi.

line_number
Numer wiersza w kodzie źródłowym, w którym wywoływano procedurę obsługi.

reserved
Nieużywany.

Wartość zwracana

Te funkcje nie zwracają wartości. Funkcje _invalid_parameter_noinfo_noreturn i _invoke_watson nie wracają do elementu wywołującego, a w niektórych przypadkach _invalid_parameter_invalid_parameter_noinfo mogą nie wrócić do elementu wywołującego.

Uwagi

Gdy funkcje biblioteki środowiska uruchomieniowego języka C są przekazywane jako nieprawidłowe parametry, funkcje biblioteki wywołają nieprawidłową procedurę obsługi parametrów, funkcję, która może zostać określona przez programistę w celu wykonania dowolnej z kilku czynności. Może na przykład zgłosić problem użytkownikowi, zapisać w dzienniku, przerwać debuger, przerwać program lub w ogóle nic nie robić. Jeśli programista nie określi żadnej funkcji, wywoływana jest domyślna procedura obsługi , _invoke_watson.

Domyślnie, gdy nieprawidłowy parametr jest identyfikowany w kodzie debugowania, funkcje biblioteki CRT wywołają funkcję _invalid_parameter przy użyciu pełnych parametrów. W kodzie bez debugowania wywoływana _invalid_parameter_noinfo jest funkcja , która wywołuje _invalid_parameter funkcję przy użyciu pustych parametrów. Jeśli funkcja biblioteki CRT bez debugowania wymaga zakończenia programu, _invalid_parameter_noinfo_noreturn wywoływana jest funkcja, która wywołuje _invalid_parameter funkcję przy użyciu pustych parametrów, a następnie wywołanie _invoke_watson funkcji w celu wymuszenia zakończenia programu.

Funkcja _invalid_parameter sprawdza, czy ustawiono nieprawidłową procedurę obsługi parametrów zdefiniowaną przez użytkownika, a jeśli tak, wywołuje ją. Jeśli na przykład zdefiniowana przez użytkownika procedura obsługi wątku lokalnego została ustawiona przez wywołanie set_thread_local_invalid_parameter_handler elementu w bieżącym wątku, jest wywoływana, funkcja zwraca wartość . W przeciwnym razie, jeśli zdefiniowana przez użytkownika globalna procedura obsługi nieprawidłowych parametrów została ustawiona przez wywołanie set_invalid_parameter_handlermetody , jest wywoływana, funkcja zwraca wartość . W przeciwnym razie wywoływana jest domyślna procedura obsługi _invoke_watson . Domyślnym zachowaniem programu _invoke_watson jest zakończenie programu. Programy obsługi zdefiniowane przez użytkownika mogą zostać zakończone lub zwrócone. Zalecamy, aby programy obsługi zdefiniowane przez użytkownika zakończyły program, chyba że odzyskiwanie jest pewne.

Po wywołaniu domyślnej procedury obsługi _invoke_watson , jeśli procesor obsługuje operację __fastfail , jest wywoływany przy użyciu parametru FAST_FAIL_INVALID_ARG i proces kończy. W przeciwnym razie zostanie zgłoszony szybki wyjątek niepowodzenia, który może zostać przechwycony przez dołączony debuger. Jeśli proces jest dozwolony do kontynuowania, zostanie zakończony przez wywołanie funkcji systemu Windows TerminateProcess przy użyciu stanu kodu wyjątku .STATUS_INVALID_CRUNTIME_PARAMETER

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Function Wymagany nagłówek
_invalid_parameter, _invalid_parameter_noinfo, _invalid_parameter_noinfo_noreturn, _invoke_watson <corecrt.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Zobacz też

Odwołanie do funkcji alfabetycznej
_get_invalid_parameter_handler, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler, _set_thread_local_invalid_parameter_handler
Walidacja parametru