Partager via


Fonction RtlCaptureStackBackTrace (ntifs.h)

La routine RtlCaptureStackBackTrace capture une trace de pile en parcourant la pile et en enregistrant les informations pour chaque image.

Syntaxe

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

Paramètres

[in] FramesToSkip

Nombre d’images à ignorer à partir du début (point d’appel actuel) de la trace back.

[in] FramesToCapture

Nombre d’images à capturer.

[out] BackTrace

Tableau alloué par l’appelant dans lequel les pointeurs vers les adresses de retour capturées à partir de la trace de pile actuelle sont retournés.

[out, optional] BackTraceHash

Valeur facultative qui peut être utilisée pour organiser les tables de hachage. Si ce paramètre est NULL, RtlCaptureStackBackTrace ne calcule pas et retourne une valeur de hachage.

Cette valeur de hachage est calculée en fonction des valeurs des pointeurs retournés dans le tableau BackTrace. Deux traces de pile identiques génèrent des valeurs de hachage identiques.

Valeur de retour

Nombre de trames capturées.

Remarques

RtlCaptureStackBackTrace capture une trace de pile pour l’appelant en marchant sur la pile (en revenant en temps d’appel) et en enregistrant les informations pour chaque image. Plus précisément, RtlCaptureStackBackTrace retourne des pointeurs vers les adresses de retour de chaque appel sur la pile, où le premier pointeur du tableau BackTrac e pointe vers l’adresse de retour de l’appel le plus récent, et ainsi de suite.

Les valeurs de hachage de trace de retour peuvent être utilisées pour déterminer rapidement si deux traces de pile sont identiques ou différentes. Vous pouvez utiliser le hachage retourné dans BackTraceHash pour comparer les traces de pile. Si vous ne souhaitez pas utiliser de hachages ou si vous souhaitez calculer vos propres valeurs de hachage, définissez BackTraceHash sur NULL.

En règle générale, sur les ordinateurs 64 bits, vous ne pouvez pas capturer la pile du noyau dans certains contextes lorsque les erreurs de page ne sont pas autorisées. Pour activer la marche à pas de la pile du noyau sur x64, définissez la valeur de Registre DisablePagingExecutive Memory Management sur 1. La valeur de Registre DisablePagingExecutive se trouve sous la clé de Registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Cette opération ne doit être effectuée qu’à des fins de diagnostic temporaire, car elle augmente l’utilisation de la mémoire du système.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h, FltKernel.h)
bibliothèque NtosKrnl.lib ; OneCoreUAP.lib sur Windows 10
DLL NtDll.dll (mode utilisateur) ; NtosKrnl.exe (mode noyau)