Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Большинство функций CRT с расширенными безопасностью, и многие из них не являются, проверяют их параметры для таких элементов, как контрольные NULLуказатели для , что целые числа попадают в допустимый диапазон или что значения перечисления являются допустимыми. Если найден недопустимый параметр, вызывается обработчик недопустимых параметров.
Подпрограмма обработчика недопустимых параметров
Если функция библиотеки среды выполнения C обнаруживает недопустимый параметр, он записывает некоторые сведения об ошибке, а затем вызывает макрос, который упаковывает недопустимую функцию диспетчера параметров. Что будет одним из _invalid_parameter, _invalid_parameter_noinfoили _invalid_parameter_noinfo_noreturn. Какая функция диспетчеризации вызывается, зависит от того, является ли код, соответственно, отладочной сборкой, розничной сборкой или ошибкой не считается восстанавливаемой.
В сборках отладки макрос недопустимых параметров обычно вызывает сбой утверждения и точку останова отладчика перед вызовом функции диспетчера. При выполнении кода утверждение может быть сообщено пользователю в диалоговом окне, в котором есть "Прерывание", "Повтор" и "Продолжить" или аналогичные варианты, зависящие от операционной системы и версии CRT. Эти параметры позволяют пользователю немедленно завершить программу, подключить отладчик или разрешить существующему коду продолжать выполнение, которое вызывает функцию диспетчера.
Недопустимая функция диспетчера параметров вызывает назначенный в данный момент обработчик недопустимых параметров. По умолчанию вызывает _invoke_watsonнедопустимый параметр, который приводит к закрытию приложения и созданию мини-дампа. Если она включена операционной системой, диалоговое окно просит пользователя отправить аварийный дамп в Корпорацию Майкрософт для анализа.
Это поведение можно изменить с помощью функций _set_invalid_parameter_handler или _set_thread_local_invalid_parameter_handler задать обработчик недопустимых параметров для собственной функции. Если указанная функция не завершает приложение, элемент управления возвращается функции, которая получила недопустимые параметры. В CRT эти функции обычно останавливают выполнение функции, задают errno код ошибки и возвращают код ошибки. Во многих случаях errno значение и возвращаемое значение являются EINVALобоими, чтобы указать недопустимый параметр. В некоторых случаях возвращается более конкретный код ошибки, например EBADF, соответствующий указателю на неправильный файл, переданному как параметр.
Дополнительные сведения о errno, см. в разделеerrno , _doserrnoи _sys_errlist_sys_nerr.
См. также
Функции безопасности в CRT
Файлы среды выполнения C (CRT) и стандартной библиотеки C++ (STL) .lib