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