Aracılığıyla paylaş


_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_watsonadlandı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_handlertarafı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_PARAMETERkullanı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

Function 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