Fungsi RtlVirtualUnwind (winnt.h)
Mengambil konteks pemanggilan fungsi yang mendahului konteks fungsi yang ditentukan.
Catatan
Fungsi ini tidak diimplementasikan pada semua platform prosesor dan implementasinya berbeda pada setiap platform yang mendukungnya. Prototipe berikut mencantumkan semua parameter potensial dan aplikasinya. Baca lebih lanjut untuk prototipe fungsi khusus prosesor.
Sintaks
NTSYSAPI PEXCEPTION_ROUTINE RtlVirtualUnwind(
[in] DWORD HandlerType,
[in] DWORD64 ImageBase,
[in] DWORD64 ControlPc,
[in] PRUNTIME_FUNCTION FunctionEntry,
[in, out] PCONTEXT ContextRecord,
[out] PVOID *HandlerData,
[out] PDWORD64 EstablisherFrame,
[in, out, optional] PKNONVOLATILE_CONTEXT_POINTERS ContextPointers
);
Parameter
[in] HandlerType
Jenis handler. Parameter ini bisa menjadi salah satu nilai berikut.
Parameter ini hanya ada pada x64.
[in] ImageBase
Alamat dasar modul tempat fungsi berada.
[in] ControlPc
Alamat virtual tempat kontrol meninggalkan fungsi yang ditentukan.
[in] FunctionEntry
Alamat entri tabel fungsi untuk fungsi yang ditentukan. Untuk mendapatkan entri tabel fungsi, panggil fungsi RtlLookupFunctionEntry .
[in, out] ContextRecord
Penunjuk ke struktur CONTEXT yang mewakili konteks bingkai sebelumnya.
[out] HandlerData
Lokasi PC. Jika parameter ini adalah 0, PC berada di prolog, epilog, atau wilayah bingkai null fungsi. Jika parameter ini adalah 1, PC berada di isi fungsi.
Parameter ini tidak ada pada x64.
[out] EstablisherFrame
Penunjuk ke struktur FRAME_POINTERS yang menerima nilai penunjuk bingkai pembentuk. Penunjuk bingkai nyata didefinisikan hanya jika InFunction adalah 1
.
Parameter ini berjenis PULONG64 pada x64.
[in, out, optional] ContextPointers
Penunjuk opsional ke struktur penunjuk konteks.
Nilai kembali
Fungsi ini mengembalikan penunjuk ke fungsi panggilan balik EXCEPTION_ROUTINE .
Keterangan
Daftar lengkap penanda epilog untuk x64 adalah sebagai berikut:
- Ret
- ret n
- rep ret
- jmp imm8 | imm32 di mana target berada di luar fungsi yang tidak digunakan
- jmp qword ptr imm32
- rex.w jmp reg
Persyaratan
Target Platform | Windows |
Header | winnt.h (sertakan Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |