_invalid_parameter
, _invalid_parameter_noinfo
, _invalid_parameter_noinfo_noreturn
_invoke_watson
Queste funzioni vengono usate dalla libreria di runtime C per gestire i parametri non validi passati alle funzioni della libreria CRT. Il codice può anche usare queste funzioni per supportare la gestione predefinita o personalizzabile dei parametri non validi.
Sintassi
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);
Parametri
expression
Stringa che rappresenta l'espressione di parametro del codice sorgente non valida.
function_name
Nome della funzione che ha chiamato il gestore.
file_name
File di codice sorgente in cui è stato chiamato il gestore.
line_number
Numero di riga nel codice sorgente in cui è stato chiamato il gestore.
reserved
Non utilizzato.
Valore restituito
Queste funzioni non restituiscono un valore. Le _invalid_parameter_noinfo_noreturn
funzioni e _invoke_watson
non tornano al chiamante e, in alcuni casi, _invalid_parameter
e _invalid_parameter_noinfo
potrebbero non tornare al chiamante.
Osservazioni:
Quando alle funzioni della libreria di runtime C vengono passati parametri non validi, la libreria di funzioni chiama un gestore di parametri non validi, ovvero una funzione che può essere specificata dal programmatore per eseguire varie operazioni. Ad esempio, segnalare il problema all'utente, scrivere in un log, attivare un debugger, terminare il programma o niente. Se il programmatore non specifica una funzione, viene chiamato un gestore predefinito, _invoke_watson
.
Per impostazione predefinita, quando viene identificato un parametro non valido nel codice di debug, le funzioni della libreria CRT chiamano la funzione _invalid_parameter
usando parametri dettagliati. Nel codice non di debug viene chiamata la funzione _invalid_parameter_noinfo
, che chiama la funzione _invalid_parameter
usando parametri vuoti. Se la funzione della libreria CRT non di debug richiede la terminazione del programma, viene chiamata la funzione _invalid_parameter_noinfo_noreturn
, che chiama la funzione _invalid_parameter
con parametri vuoti, quindi viene eseguita una chiamata della funzione _invoke_watson
per forzare la terminazione del programma.
La funzione _invalid_parameter
verifica se è stato impostato un gestore di parametri non validi definito dall'utente e, in caso affermativo, lo chiama. Ad esempio, se un gestore thread-local definito dall'utente è stato impostato da una chiamata a set_thread_local_invalid_parameter_handler
nel thread corrente, viene chiamato, la funzione restituisce. In caso contrario, se un gestore di parametri non validi definito dall'utente è stato impostato da una chiamata a set_invalid_parameter_handler
, viene chiamato , la funzione restituisce . Altrimenti viene chiamato il gestore predefinito _invoke_watson
. Il comportamento predefinito di _invoke_watson
prevede la terminazione del programma. I gestori definiti dall'utente possono terminare o restituire il controllo. È consigliabile che i gestori definiti dall'utente terminino il programma a meno che il ripristino non sia certo.
Quando viene chiamato il gestore _invoke_watson
predefinito, se il processore supporta un'operazione __fastfail
, viene richiamato usando un parametro di FAST_FAIL_INVALID_ARG
e il processo termina. In caso contrario, viene generata un'eccezione di errore immediato, che può essere intercettata da un debugger collegato. Se il processo può continuare, viene terminato da una chiamata alla funzione di Windows TerminateProcess
usando uno stato del codice eccezione di STATUS_INVALID_CRUNTIME_PARAMETER
.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Funzione | Intestazione obbligatoria |
---|---|
_invalid_parameter , _invalid_parameter_noinfo , _invalid_parameter_noinfo_noreturn _invoke_watson |
<corecrt.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Vedi anche
Informazioni di riferimento sulle funzioni alfabetiche
_get_invalid_parameter_handler
, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler
, _set_thread_local_invalid_parameter_handler
Convalida dei parametri