Funzione RtlCaptureStackBackTrace (ntifs.h)
La routine RtlCaptureStackBackTrace acquisisce un'analisi dello stack camminando sullo stack e registrando le informazioni per ogni fotogramma.
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 dall'analisi dello stack corrente.
[out, optional] BackTraceHash
Valore facoltativo che può essere utilizzato per organizzare le 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.
Osservazioni
RtlCaptureStackBackTrace acquisisce un'analisi dello stack per il chiamante camminando lo stack (a ritroso nel tempo di chiamata) e registrando le informazioni per ogni fotogramma. In particolare, RtlCaptureStackBackTrace restituisce puntatori agli indirizzi restituiti di ogni chiamata nello stack, dove il primo puntatore nella 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 propri valori hash, 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 a scopo di diagnosi temporanea perché aumenta l'utilizzo della memoria del sistema.
Fabbisogno
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) |