struktur EXCEPTION_RECORD64 (winnt.h)

Menjelaskan pengecualian.

Sintaks

typedef struct _EXCEPTION_RECORD64 {
  DWORD   ExceptionCode;
  DWORD   ExceptionFlags;
  DWORD64 ExceptionRecord;
  DWORD64 ExceptionAddress;
  DWORD   NumberParameters;
  DWORD   __unusedAlignment;
  DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64;

Anggota

ExceptionCode

Alasan pengecualian terjadi. Ini adalah kode yang dihasilkan oleh pengecualian perangkat keras, atau kode yang ditentukan dalam fungsi RaiseException untuk pengecualian yang dihasilkan perangkat lunak. Tabel berikut menjelaskan kode pengecualian yang kemungkinan terjadi karena kesalahan pemrograman umum.

Nilai Makna
EXCEPTION_ACCESS_VIOLATION
Utas mencoba membaca dari atau menulis ke alamat virtual yang tidak memiliki akses yang sesuai.
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
Utas mencoba mengakses elemen array yang berada di luar batas dan perangkat keras yang mendasar mendukung pemeriksaan batas.
EXCEPTION_BREAKPOINT
Titik henti ditemui.
EXCEPTION_DATATYPE_MISALIGNMENT
Utas mencoba membaca atau menulis data yang tidak selaras pada perangkat keras yang tidak memberikan penyelarasan. Misalnya, nilai 16-bit harus diratakan pada batas 2-byte; Nilai 32-bit pada batas 4-byte, dan sebagainya.
EXCEPTION_FLT_DENORMAL_OPERAND
Salah satu operan dalam operasi floating-point adalah denormal. Nilai denormal adalah nilai yang terlalu kecil untuk diwakili sebagai nilai floating-point standar.
EXCEPTION_FLT_DIVIDE_BY_ZERO
Utas mencoba membagi nilai floating-point dengan pembagi floating-point nol.
EXCEPTION_FLT_INEXACT_RESULT
Hasil operasi floating-point tidak dapat direpresentasikan persis sebagai pecahan desimal.
EXCEPTION_FLT_INVALID_OPERATION
Pengecualian ini mewakili pengecualian titik mengambang yang tidak disertakan dalam daftar ini.
EXCEPTION_FLT_OVERFLOW
Eksponen operasi floating-point lebih besar dari besarnya yang diizinkan oleh jenis yang sesuai.
EXCEPTION_FLT_STACK_CHECK
Tumpukan meluap atau underflowed sebagai hasil dari operasi floating-point.
EXCEPTION_FLT_UNDERFLOW
Eksponen operasi floating-point kurang dari besaran yang diizinkan oleh jenis yang sesuai.
EXCEPTION_ILLEGAL_INSTRUCTION
Utas mencoba menjalankan instruksi yang tidak valid.
EXCEPTION_IN_PAGE_ERROR
Utas mencoba mengakses halaman yang tidak ada, dan sistem tidak dapat memuat halaman. Misalnya, pengecualian ini mungkin terjadi jika koneksi jaringan hilang saat menjalankan program melalui jaringan.
EXCEPTION_INT_DIVIDE_BY_ZERO
Utas mencoba membagi nilai bilangan bulat dengan pembagi bilangan bulat nol.
EXCEPTION_INT_OVERFLOW
Hasil operasi bilangan bulat menyebabkan dilakukannya sedikit hasil yang paling signifikan.
EXCEPTION_INVALID_DISPOSITION
Handler pengecualian mengembalikan disposisi yang tidak valid ke dispatcher pengecualian. Programmer yang menggunakan bahasa tingkat tinggi seperti C tidak boleh mengalami pengecualian ini.
EXCEPTION_NONCONTINUABLE_EXCEPTION
Utas mencoba melanjutkan eksekusi setelah terjadi pengecualian yang tidak dapat dilanjutkan.
EXCEPTION_PRIV_INSTRUCTION
Utas mencoba menjalankan instruksi yang operasinya tidak diizinkan dalam mode komputer saat ini.
EXCEPTION_SINGLE_STEP
Perangkap jejak atau mekanisme instruksi tunggal lainnya menandakan bahwa satu instruksi telah dijalankan.
EXCEPTION_STACK_OVERFLOW
Utas menggunakan tumpukannya.
 

Kode pengecualian lain kemungkinan terjadi saat men-debug proses konsol. Ini tidak muncul karena kesalahan pemrograman. Kode pengecualian DBG_CONTROL_C terjadi ketika CTRL+C dimasukkan ke proses konsol yang menangani sinyal CTRL+C dan sedang di-debug. Kode pengecualian ini tidak dimaksudkan untuk ditangani oleh aplikasi. Ini dinaikkan hanya untuk keuntungan debugger, dan dinaikkan hanya ketika debugger dilampirkan ke proses konsol.

ExceptionFlags

Bendera pengecualian. Anggota ini dapat berupa nol, menunjukkan pengecualian yang dapat dilanjutkan, atau EXCEPTION_NONCONTINUABLE menunjukkan pengecualian yang tidak dapat dilanjutkan. Setiap upaya untuk melanjutkan eksekusi setelah pengecualian yang tidak dapat dilanjutkan menyebabkan pengecualian EXCEPTION_NONCONTINUABLE_EXCEPTION .

ExceptionRecord

Penunjuk ke struktur EXCEPTION_RECORD terkait. Rekaman pengecualian dapat dirangkai bersama-sama untuk memberikan informasi tambahan saat pengecualian berlapis terjadi.

ExceptionAddress

Alamat tempat pengecualian terjadi.

NumberParameters

Jumlah parameter yang terkait dengan pengecualian. Ini adalah jumlah elemen yang ditentukan dalam array ExceptionInformation .

__unusedAlignment

ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]

Array argumen tambahan yang menjelaskan pengecualian. Fungsi RaiseException dapat menentukan array argumen ini. Untuk sebagian besar kode pengecualian, elemen array tidak terdefinisi. Tabel berikut ini menjelaskan kode pengecualian yang elemen array-nya ditentukan.

Kode pengecualian Makna
EXCEPTION_ACCESS_VIOLATION
Elemen pertama dari array berisi bendera baca-tulis yang menunjukkan jenis operasi yang menyebabkan pelanggaran akses. Jika nilai ini nol, utas mencoba membaca data yang tidak dapat diakses. Jika nilai ini adalah 1, utas mencoba menulis ke alamat yang tidak dapat diakses.

Jika nilai ini adalah 8, utas menyebabkan pelanggaran pencegahan eksekusi data mode pengguna (DEP).

Elemen array kedua menentukan alamat virtual data yang tidak dapat diakses.

EXCEPTION_IN_PAGE_ERROR
Elemen pertama dari array berisi bendera baca-tulis yang menunjukkan jenis operasi yang menyebabkan pelanggaran akses. Jika nilai ini nol, utas mencoba membaca data yang tidak dapat diakses. Jika nilai ini adalah 1, utas mencoba menulis ke alamat yang tidak dapat diakses.

Jika nilai ini adalah 8, utas menyebabkan pelanggaran pencegahan eksekusi data mode pengguna (DEP).

Elemen array kedua menentukan alamat virtual data yang tidak dapat diakses.

Elemen array ketiga menentukan kode NTSTATUS yang mendasar yang menghasilkan pengecualian.

Keterangan

Untuk mengaktifkan debugger untuk men-debug target yang berjalan pada arsitektur yang berbeda (32-bit versus 64-bit), gunakan salah satu bentuk eksplisit dari struktur ini.

typedef struct _EXCEPTION_RECORD32 {
    DWORD    ExceptionCode;
    DWORD ExceptionFlags;
    DWORD ExceptionRecord;
    DWORD ExceptionAddress;
    DWORD NumberParameters;
    DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD32, *PEXCEPTION_RECORD32;

typedef struct _EXCEPTION_RECORD64 {
    DWORD    ExceptionCode;
    DWORD ExceptionFlags;
    DWORD64 ExceptionRecord;
    DWORD64 ExceptionAddress;
    DWORD NumberParameters;
    DWORD __unusedAlignment;
    DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64;

Persyaratan

   
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Header winnt.h (termasuk Windows.h)

Lihat juga

EXCEPTION_DEBUG_INFO

EXCEPTION_POINTERS

GetExceptionInformation

RaiseException

UnhandledExceptionFilter