Bagikan melalui


Fungsi RtlCaptureStackBackTrace (ntifs.h)

Rutinitas RtlCaptureStackBackTrace menangkap jejak tumpukan dengan berjalan di tumpukan dan merekam informasi untuk setiap bingkai.

Sintaks

NTSYSAPI USHORT RtlCaptureStackBackTrace(
  [in]            ULONG  FramesToSkip,
  [in]            ULONG  FramesToCapture,
  [out]           PVOID  *BackTrace,
  [out, optional] PULONG BackTraceHash
);

Parameter

[in] FramesToSkip

Jumlah bingkai yang akan dilewati dari awal (titik panggilan saat ini) dari jejak belakang.

[in] FramesToCapture

Jumlah bingkai yang akan diambil.

[out] BackTrace

Array yang dialokasikan penelepon di mana penunjuk ke alamat pengembalian yang diambil dari jejak tumpukan saat ini dikembalikan.

[out, optional] BackTraceHash

Nilai opsional yang dapat digunakan untuk mengatur tabel hash. Jika parameter ini NULL, RtlCaptureStackBackTrace tidak menghitung dan mengembalikan nilai hash.

Nilai hash ini dihitung berdasarkan nilai pointer yang dikembalikan dalam array BackTrace . Dua jejak tumpukan yang identik akan menghasilkan nilai hash yang identik.

Nilai kembali

Jumlah bingkai yang diambil.

Keterangan

RtlCaptureStackBackTrace menangkap jejak tumpukan untuk penelepon dengan berjalan di tumpukan (berjalan kembali dalam waktu panggilan), dan merekam informasi untuk setiap bingkai. Secara khusus, RtlCaptureStackBackTrace mengembalikan pointer ke alamat pengembalian setiap panggilan pada tumpukan, di mana pointer pertama dalam array BackTrace menunjuk ke alamat pengembalian panggilan terbaru, dan sebagainya.

Nilai hash jejak balik dapat digunakan untuk menentukan dengan cepat apakah dua jejak tumpukan identik atau berbeda. Anda dapat menggunakan hash yang dikembalikan di BackTraceHash untuk membandingkan jejak tumpukan. Jika Anda tidak ingin menggunakan hash, atau ingin menghitung nilai hash Anda sendiri, atur BackTraceHash ke NULL.

Biasanya, pada komputer 64-bit, Anda tidak dapat menangkap tumpukan kernel dalam konteks tertentu ketika kesalahan halaman tidak diizinkan. Untuk mengaktifkan stack kernel berjalan pada x64, atur nilai registri DisablePagingExecutive Memory Management ke 1. Nilai registri DisablePagingExecutive terletak di bawah kunci registri berikut: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Ini hanya boleh dilakukan untuk tujuan diagnosis sementara karena meningkatkan penggunaan memori sistem.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h, FltKernel.h)
Pustaka NtosKrnl.lib; OneCoreUAP.lib di Windows 10
DLL NtDll.dll (mode pengguna); NtosKrnl.exe (mode kernel)