Condividi tramite


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)