_invalid_parameter
, _invalid_parameter_noinfo
, _invalid_parameter_noinfo_noreturn
, _invoke_watson
Bu işlevler, CRT Kitaplığı işlevlerine geçirilen geçerli olmayan parametreleri işlemek için C Çalışma Zamanı Kitaplığı tarafından kullanılır. Kodunuz, geçerli olmayan parametrelerin varsayılan veya özelleştirilebilir işlenmesini desteklemek için bu işlevleri de kullanabilir.
Sözdizimi
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);
Parametreler
expression
Geçerli olmayan kaynak kodu parametre ifadesini temsil eden bir dize.
function_name
İşleyiciyi çağıran işlevin adı.
file_name
İşleyicinin çağrıldığı kaynak kod dosyası.
line_number
İşleyicinin çağrıldığı kaynak kodundaki satır numarası.
reserved
Kullanılmıyor.
Dönüş değeri
Bu işlevler bir değer döndürmez. _invalid_parameter_noinfo_noreturn
ve _invoke_watson
işlevleri çağırana geri dönmez ve bazı durumlarda _invalid_parameter
_invalid_parameter_noinfo
çağırana geri dönemez.
Açıklamalar
C çalışma zamanı kitaplığı işlevleri geçerli olmayan parametreler geçirildiğinde, kitaplık işlevleri programcı tarafından çeşitli işlemlerden herhangi birini yapmak için belirtilebilen bir işlev olan geçersiz parametre işleyicisini çağırır. Örneğin, sorunu kullanıcıya bildirebilir, günlüğe yazabilir, hata ayıklayıcıyı kırabilir, programı sonlandırabilir veya hiçbir şey yapmaz. Programcı tarafından hiçbir işlev belirtilmezse, varsayılan işleyicisi olarak _invoke_watson
adlandırılır.
Varsayılan olarak, hata ayıklama kodunda geçerli olmayan bir parametre tanımlandığında, CRT kitaplık işlevleri ayrıntılı parametreleri kullanarak işlevi _invalid_parameter
çağırır. Hata ayıklama olmayan kodda _invalid_parameter_noinfo
işlev çağrılır ve işlevi boş parametreler kullanarak çağırır _invalid_parameter
. Hata ayıklaması olmayan CRT kitaplığı işlevi program sonlandırması gerektiriyorsa işlev _invalid_parameter_noinfo_noreturn
çağrılır; bu işlev boş parametreler kullanarak işlevi çağırır _invalid_parameter
ve ardından program sonlandırmayı zorlamak için işleve _invoke_watson
bir çağrı yapılır.
İşlev, _invalid_parameter
kullanıcı tanımlı geçersiz parametre işleyicisinin ayarlanıp ayarlanmadığını denetler ve ayarlıysa bunu çağırır. Örneğin, kullanıcı tanımlı bir iş parçacığı yerel işleyicisi geçerli iş parçacığında çağrısı set_thread_local_invalid_parameter_handler
tarafından ayarlandıysa, çağrılır ve işlev döndürür. Aksi takdirde, kullanıcı tanımlı genel geçersiz parametre işleyicisi çağrısı set_invalid_parameter_handler
tarafından ayarlandıysa çağrılır ve işlev döndürür. Aksi takdirde, varsayılan işleyici _invoke_watson
çağrılır. varsayılan davranışı _invoke_watson
programı sonlandırmaktır. Kullanıcı tanımlı işleyiciler sonlandırılabilir veya döndürülebilir. Kurtarma işlemi kesin olmadığı sürece kullanıcı tanımlı işleyicilerin programı sonlandırmasını öneririz.
Varsayılan işleyici _invoke_watson
çağrıldığında, işlemci bir __fastfail
işlemi destekliyorsa parametresi kullanılarak FAST_FAIL_INVALID_ARG
çağrılır ve işlem sonlandırılır. Aksi takdirde, ekli bir hata ayıklayıcı tarafından yakalanabilen hızlı bir başarısız özel durum oluşturulur. İşlemin devam etmesi için izin verilirse, özel durum kodu durumu STATUS_INVALID_CRUNTIME_PARAMETER
kullanılarak Windows TerminateProcess
işlevine yapılan bir çağrıyla sonlandırılır.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
İşlev | Gerekli başlık |
---|---|
_invalid_parameter , _invalid_parameter_noinfo , _invalid_parameter_noinfo_noreturn , _invoke_watson |
<corecrt.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Ayrıca bkz.
Alfabetik işlev başvurusu
_get_invalid_parameter_handler
, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler
, _set_thread_local_invalid_parameter_handler
Parametre doğrulama