_invalid_parameter
, , _invalid_parameter_noinfo
_invalid_parameter_noinfo_noreturn
_invoke_watson
Эти функции используются библиотекой времени выполнения C для обработки недопустимых параметров, передаваемых в функции библиотеки CRT. Эти функции также могут использоваться в коде для поддержки определенных по умолчанию или настраиваемых механизмов обработки недопустимых параметров.
Синтаксис
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);
Параметры
expression
Строка, представляющая недопустимое выражение параметра исходного кода.
function_name
Имя функции, которая вызвала обработчик.
file_name
Файл исходного кода, в котором был вызван обработчик.
line_number
Номер строки в исходном коде, где был вызван обработчик.
reserved
Не используется.
Возвращаемое значение
Эти функции не возвращают значение. Вызывающий _invalid_parameter_noinfo_noreturn
объект не возвращается и _invoke_watson
в некоторых случаях _invalid_parameter
_invalid_parameter_noinfo
функции не возвращаются в вызывающий объект.
Замечания
Если функциям библиотеки времени выполнения C передаются недопустимые параметры, они вызывают обработчик недопустимого параметра. Он представляет собой функцию, в которой программист задает выполнение определенных действий. Например, обработчик может сообщить о проблеме пользователю, записать данные в журнал, установить прерывание в отладчике, завершить работу программы или не выполнять никаких действий. Если программист не указал никакую функцию, по умолчанию вызывается обработчик _invoke_watson
.
Если в коде отладки обнаруживается недопустимый параметр, функции библиотеки CRT по умолчанию вызывают функцию _invalid_parameter
с подробными параметрами. В обычном коде вызывается функция _invalid_parameter_noinfo
, которая, в свою очередь, вызывает функцию _invalid_parameter
с пустыми параметрами. Если функции библиотеки CRT, не осуществляющей отладку, требуется завершить работу программы, вызывается функция _invalid_parameter_noinfo_noreturn
, которая вызывает функцию _invalid_parameter
с пустыми параметрами, после чего вызывается функция _invoke_watson
для принудительного завершения программы.
Функция _invalid_parameter
проверяет наличие обработчика недопустимого параметра, определенного пользователем, и в случае обнаружения вызывает его. Например, если определяемый пользователем обработчик потока был задан вызовом set_thread_local_invalid_parameter_handler
в текущем потоке, он вызывается, то функция возвращается. В противном случае, если определяемый пользователем глобальный обработчик недопустимых параметров был задан вызовом set_invalid_parameter_handler
, вызывается, функция возвращается. В противном случае вызывается обработчик по умолчанию _invoke_watson
. По умолчанию _invoke_watson
завершает работу программы. Определенные пользователем обработчики могут завершать работу программы или выполнять возврат. В тех случаях, когда восстановление работоспособности программы не гарантировано, рекомендуется завершать ее.
При вызове обработчика _invoke_watson
по умолчанию, если обработчик поддерживает __fastfail
операцию, он вызывается с помощью параметра FAST_FAIL_INVALID_ARG
и завершается процесс. В противном случае возникает исключение с быстрым прекращением, которое может быть перехвачено с помощью связанного отладчика. Если процесс разрешен, он завершается вызовом функции Windows TerminateProcess
с помощью состояния STATUS_INVALID_CRUNTIME_PARAMETER
кода исключения.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Function | Обязательный заголовок |
---|---|
_invalid_parameter , , _invalid_parameter_noinfo _invalid_parameter_noinfo_noreturn _invoke_watson |
<corecrt.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Справочник по алфавитной функции
_get_invalid_parameter_handler
, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler
, _set_thread_local_invalid_parameter_handler
Проверка параметров