Bagikan melalui


__fastfail

Khusus Microsoft

Segera mengakhiri proses panggilan dengan overhead minimum.

Sintaks

__declspec(noreturn) void __fastfail(unsigned int code);

Parameter

code
[di] Konstanta FAST_FAIL_<description> simbolis dari winnt.h atau wdm.h yang menunjukkan alasan penghentian proses.

Nilai hasil

Intrinsik __fastfail tidak kembali.

Keterangan

Intrinsik __fastfail menyediakan mekanisme untuk permintaan kegagalan cepat—cara bagi proses yang berpotensi rusak untuk meminta penghentian proses segera. Kegagalan kritis yang mungkin telah merusak status program dan tumpukan di luar pemulihan tidak dapat ditangani oleh fasilitas penanganan pengecualian reguler. Gunakan __fastfail untuk mengakhiri proses menggunakan overhead minimal.

Secara internal, __fastfail diimplementasikan dengan menggunakan beberapa mekanisme khusus arsitektur:

Arsitektur Instruksi Lokasi argumen kode
x86 0x29 int ecx
x64 0x29 int rcx
ARM Opcode 0xDEFB r0
ARM64 Opcode 0xF003 x0

Permintaan kegagalan cepat mandiri dan biasanya hanya memerlukan dua instruksi untuk dijalankan. Setelah permintaan kegagalan cepat dijalankan, kernel kemudian mengambil tindakan yang sesuai. Dalam kode mode pengguna, tidak ada dependensi memori di luar penunjuk instruksi itu sendiri ketika peristiwa kegagalan cepat dinaikkan. Itu memaksimalkan keandalannya, bahkan dalam kasus kerusakan memori yang parah.

Argumen code , salah FAST_FAIL_<description> satu konstanta simbolis dari winnt.h atau wdm.h, menjelaskan jenis kondisi kegagalan. Ini dimasukkan ke dalam laporan kegagalan dengan cara khusus lingkungan.

Permintaan kegagalan cepat mode pengguna muncul sebagai pengecualian kesempatan kedua yang tidak dapat dilanjutkan dengan kode pengecualian 0xC0000409, dan dengan setidaknya satu parameter pengecualian. Parameter pengecualian pertama adalah nilainya code . Kode pengecualian ini menunjukkan kepada Pelaporan Galat Windows (WER) dan infrastruktur debugging bahwa proses rusak, dan bahwa tindakan dalam proses minimal harus diambil sebagai respons terhadap kegagalan. Permintaan kegagalan cepat mode kernel diimplementasikan dengan menggunakan kode pemeriksaan bug khusus, KERNEL_SECURITY_CHECK_FAILURE (0x139). Dalam kedua kasus, tidak ada penangan pengecualian yang dipanggil karena program ini diharapkan dalam keadaan rusak. Jika debugger ada, akan diberikan kesempatan untuk memeriksa status program sebelum penghentian.

Dukungan untuk mekanisme kegagalan cepat asli dimulai di Windows 8. Sistem operasi Windows yang tidak mendukung instruksi kegagalan cepat secara asli biasanya akan memperlakukan permintaan gagal yang cepat sebagai pelanggaran akses, atau sebagai pemeriksaan UNEXPECTED_KERNEL_MODE_TRAP bug. Dalam kasus ini, program masih dihentikan, tetapi belum tentu secepatnya.

__fastfail hanya tersedia sebagai intrinsik.

Persyaratan

Intrinsik Arsitektur
__fastfail x86, x64, ARM, ARM64

File header<intrin.h>

END Khusus Microsoft

Baca juga

Intrinsik pengkompilasi