Funzione RtlCaptureStackBackTrace (ntifs.h)

La routine RtlCaptureStackBackTrace acquisisce una traccia dello stack camminando lo stack e registrando le informazioni per ogni frame.

Sintassi

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

Parametri

[in] FramesToSkip

Numero di fotogrammi da ignorare dall'inizio (punto di chiamata corrente) della traccia indietro.

[in] FramesToCapture

Numero di fotogrammi da acquisire.

[out] BackTrace

Matrice allocata dal chiamante in cui vengono restituiti i puntatori agli indirizzi restituiti dalla traccia dello stack corrente.

[out, optional] BackTraceHash

Valore facoltativo che può essere usato per organizzare tabelle hash. Se questo parametro è NULL, RtlCaptureStackBackTrace non calcola e restituisce un valore hash.

Questo valore hash viene calcolato in base ai valori dei puntatori restituiti nella matrice BackTrace . Due tracce dello stack identiche genereranno valori hash identici.

Valore restituito

Numero di fotogrammi acquisiti.

Commenti

RtlCaptureStackBackTrace acquisisce una traccia dello stack per il chiamante camminando lo stack (a piedi indietro nel tempo di chiamata) e registrando le informazioni per ogni frame. In particolare, RtlCaptureStackBackTrace restituisce puntatori agli indirizzi restituiti di ogni chiamata nello stack, in cui il primo puntatore della matrice BackTrace punta all'indirizzo restituito della chiamata più recente e così via.

È possibile usare i valori hash di traccia indietro per determinare rapidamente se due tracce dello stack sono identiche o diverse. È possibile usare l'hash restituito in BackTraceHash per confrontare le tracce dello stack. Se non si vogliono usare hash o si desidera calcolare i valori hash personalizzati, impostare BackTraceHash su NULL.

In genere, nei computer a 64 bit non è possibile acquisire lo stack del kernel in determinati contesti quando gli errori di pagina non sono consentiti. Per abilitare l'esecuzione dello stack del kernel in x64, impostare il valore del Registro di sistema DisablePagingExecutive Memory Management su 1. Il valore del Registro di sistema DisablePagingExecutive si trova nella chiave del Registro di sistema seguente: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Questa operazione deve essere eseguita solo per scopi di diagnosi temporanei perché aumenta l'utilizzo della memoria del sistema.

Requisiti

Requisito Valore
Client minimo supportato Windows XP
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h, FltKernel.h)
Libreria NtosKrnl.lib; OneCoreUAP.lib in Windows 10
DLL NtDll.dll (modalità utente); NtosKrnl.exe (modalità kernel)