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) |