_invalid_parameter
, _invalid_parameter_noinfo
, _invalid_parameter_noinfo_noreturn
, _invoke_watson
Essas funções são usadas pela Biblioteca em Runtime do C para lidar com parâmetros inválidos passados para funções da biblioteca do CRT. Seu código também pode usar essas funções para dar suporte à manipulação padrão ou personalizável de parâmetros inválidos.
Sintaxe
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);
Parâmetros
expression
Uma cadeia de caracteres que representa a expressão do parâmetro do código-fonte que não é válida.
function_name
O nome da função que chamou o manipulador.
file_name
O arquivo de código-fonte em que o manipulador foi chamado.
line_number
O número de linha no código-fonte em que o manipulador foi chamado.
reserved
Não utilizado.
Valor retornado
Essas funções não retornam um valor. As funções _invalid_parameter_noinfo_noreturn
e _invoke_watson
não são retornadas ao chamador e, em alguns casos, _invalid_parameter
e _invalid_parameter_noinfo
podem não ser retornadas ao chamador.
Comentários
Quando funções da biblioteca de runtime do C recebem parâmetros inválidos, as funções da biblioteca chamam um manipulador de parâmetro inválido, que é uma função que pode ser especificada pelo programador para realizar várias ações. Por exemplo, ela pode informar o problema para o usuário, gravar em um log, interrompê-lo em um depurador, encerrar o programa ou não fazer nada. Se nenhuma função for especificada pelo programador, um manipulador padrão, _invoke_watson
, será chamado.
Por padrão, quando um parâmetro inválido é identificado no código de depuração, funções da biblioteca do CRT chamam a função _invalid_parameter
usando parâmetros detalhados. No código sem depuração, a função _invalid_parameter_noinfo
é chamada, o que chama a função _invalid_parameter
usando parâmetros vazios. Se a função da biblioteca do CRT sem depuração exigir o encerramento do programa, a função _invalid_parameter_noinfo_noreturn
será chamada, o que chama a função _invalid_parameter
usando parâmetros vazios, seguidos por uma chamada para a função _invoke_watson
para forçar o encerramento do programa.
A função _invalid_parameter
verifica se um manipulador de parâmetro inválido definido pelo usuário foi definido e, nesse caso, o chama. Por exemplo, se um manipulador local do thread definido pelo usuário tiver sido definido por uma chamada para set_thread_local_invalid_parameter_handler
no thread atual, ele será chamado e a função retornará. Caso contrário, se um manipulador de parâmetro inválido global definido pelo usuário tiver sido definido por uma chamada para set_invalid_parameter_handler
, ele será chamado e a função retornará. Caso contrário, o manipulador padrão _invoke_watson
será chamado. O comportamento padrão de _invoke_watson
é encerrar o programa. Manipuladores definidos pelo usuário podem ser encerrados ou retornados. Recomendamos que manipuladores definidos pelo usuário finalizem o programa, a menos que a recuperação seja certa.
Quando o manipulador padrão _invoke_watson
é chamado, se o processador der suporte a uma operação __fastfail
, ele será invocado usando um parâmetro de FAST_FAIL_INVALID_ARG
e o processo será encerrado. Caso contrário, uma exceção de falha rápida será gerada, o que pode ser capturado por um depurador anexado. Se o processo puder continuar, ele será encerrado por uma chamada à função TerminateProcess
do Windows usando um status de código de exceção STATUS_INVALID_CRUNTIME_PARAMETER
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Requisitos
Função | Cabeçalho necessário |
---|---|
_invalid_parameter , _invalid_parameter_noinfo , _invalid_parameter_noinfo_noreturn , _invoke_watson |
<corecrt.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Confira também
Referência alfabética de função
_get_invalid_parameter_handler
, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler
, _set_thread_local_invalid_parameter_handler
Validação de parâmetros