Bagikan melalui


_invalid_parameter, _invalid_parameter_noinfo, _invalid_parameter_noinfo_noreturn, _invoke_watson

Fungsi-fungsi ini digunakan oleh Pustaka Runtime C untuk menangani parameter yang tidak valid yang diteruskan ke fungsi Pustaka CRT. Kode Anda juga dapat menggunakan fungsi-fungsi ini untuk mendukung penanganan parameter yang tidak valid secara default atau dapat disesuaikan.

Sintaks

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);

Parameter

expression
String yang mewakili ekspresi parameter kode sumber yang tidak valid.

function_name
Nama fungsi yang disebut handler.

file_name
File kode sumber tempat handler dipanggil.

line_number
Nomor baris dalam kode sumber tempat handler dipanggil.

reserved
Tidak digunakan.

Nilai hasil

Fungsi-fungsi ini tidak mengembalikan nilai. Fungsi _invalid_parameter_noinfo_noreturn dan _invoke_watson tidak kembali ke pemanggil, dan dalam beberapa kasus, _invalid_parameter dan _invalid_parameter_noinfo mungkin tidak kembali ke pemanggil.

Keterangan

Ketika fungsi pustaka runtime C dilewatkan parameter yang tidak valid, fungsi pustaka memanggil handler parameter yang tidak valid, fungsi yang mungkin ditentukan oleh programmer untuk melakukan salah satu dari beberapa hal. Misalnya, ini dapat melaporkan masalah kepada pengguna, menulis ke log, melanggar debugger, mengakhiri program, atau tidak melakukan apa pun sama sekali. Jika tidak ada fungsi yang ditentukan oleh programmer, handler default, _invoke_watson, dipanggil.

Secara default, ketika parameter yang tidak valid diidentifikasi dalam kode debug, fungsi pustaka CRT memanggil fungsi _invalid_parameter menggunakan parameter verbose. Dalam kode non-debug, _invalid_parameter_noinfo fungsi dipanggil, yang memanggil _invalid_parameter fungsi menggunakan parameter kosong. Jika fungsi pustaka CRT non-debug memerlukan penghentian program, _invalid_parameter_noinfo_noreturn fungsi dipanggil, yang memanggil _invalid_parameter fungsi menggunakan parameter kosong, diikuti dengan panggilan ke _invoke_watson fungsi untuk memaksa penghentian program.

Fungsi _invalid_parameter memeriksa apakah handler parameter yang tidak valid yang ditentukan pengguna diatur, dan jika demikian, memanggilnya. Misalnya, jika handler thread-local yang ditentukan pengguna diatur oleh panggilan ke set_thread_local_invalid_parameter_handler di utas saat ini, itu dipanggil, maka fungsi akan kembali. Jika tidak, jika handler parameter global yang ditentukan pengguna tidak valid diatur oleh panggilan ke set_invalid_parameter_handler, maka fungsi akan kembali. Jika tidak, handler _invoke_watson default dipanggil. Perilaku _invoke_watson default adalah mengakhiri program. Handler yang ditentukan pengguna dapat mengakhiri atau mengembalikan. Kami menyarankan agar penangan yang ditentukan pengguna menghentikan program kecuali pemulihannya pasti.

Ketika handler _invoke_watson default dipanggil, jika prosesor mendukung __fastfail operasi, itu dipanggil menggunakan parameter FAST_FAIL_INVALID_ARG dan proses berakhir. Jika tidak, pengecualian gagal cepat dinaikkan, yang dapat ditangkap oleh debugger terlampir. Jika proses diizinkan untuk melanjutkan, proses dihentikan oleh panggilan ke fungsi Windows TerminateProcess menggunakan status kode pengecualian .STATUS_INVALID_CRUNTIME_PARAMETER

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Function Header yang diperlukan
_invalid_parameter, _invalid_parameter_noinfo, _invalid_parameter_noinfo_noreturn, _invoke_watson <corecrt.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Baca juga

Referensi fungsi alfabet
_get_invalid_parameter_handler, _get_thread_local_invalid_parameter_handler
_set_invalid_parameter_handler, _set_thread_local_invalid_parameter_handler
Validasi parameter