Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Эти функции используются библиотекой времени выполнения 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
Проверка параметров