_invalid_parameter
、 、 _invalid_parameter_noinfo
、 _invalid_parameter_noinfo_noreturn
_invoke_watson
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
未使用的。
傳回值
這些函式不會傳回值。 和 _invoke_watson
函_invalid_parameter_noinfo_noreturn
式不會傳回給呼叫端,在某些情況下,_invalid_parameter
而且_invalid_parameter_noinfo
可能不會傳回給呼叫端。
備註
當無效參數傳遞至 C 執行階段程式庫函式時,程式庫函式會呼叫「無效的參數處理常式」,此函式可由程式設計師指定其可以做的事情。 例如,它可以將問題回報給使用者、寫入記錄檔、開啟偵錯工具、終止程式,或不執行任何動作。 如果程式設計師沒有指定任何功能,則會呼叫預設處理常式 _invoke_watson
。
根據預設,當偵錯程式碼識別出無效參數時,CRT 程式庫函式會使用 verbose 參數呼叫 _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
的預設行為是終止程式。 使用者定義的處理常式可能會終止或傳回。 我們建議您,除非確定可復原,否則使用者定義的處理常式應終止程式。
呼叫默認處理程式時,如果處理器支援__fastfail
作業,則會使用 的 FAST_FAIL_INVALID_ARG
參數叫用該處理程式_invoke_watson
,而且進程會終止。 否則,就會引發快速失敗例外狀況,這可以附加的偵錯工具來攔截。 如果允許進程繼續,則會使用的例外狀況代碼狀態STATUS_INVALID_CRUNTIME_PARAMETER
來終止對 Windows TerminateProcess
函式的呼叫。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
需求
函式 | 必要的標頭 |
---|---|
_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
參數驗證