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 arrière.

[in] FramesToCapture

Nombre d’images à capturer.

[out] BackTrace

Tableau alloué à 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 des tables de hachage. Si ce paramètre a la valeur NULL, RtlCaptureStackBackTrace ne calcule pas et ne retourne pas de valeur de hachage.

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

Valeur retournée

Nombre de frames capturés.

Notes

RtlCaptureStackBackTrace capture une trace de pile pour l’appelant en parcourant la pile (en retraçant le temps de l’appel) et en enregistrant des 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 BackTrace pointe vers l’adresse de retour de l’appel le plus récent, et ainsi de suite.

Les valeurs de hachage de trace arrière 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 hachage ou 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 à pied 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. Cela ne doit être effectué qu’à des fins de diagnostic temporaire, car cela augmente l’utilisation de la mémoire du système.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP
Plateforme cible Universal
En-tête ntifs.h (inclure Ntifs.h, FltKernel.h)
Bibliothèque NtosKrnl.lib ; OneCoreUAP.lib sur Windows 10
DLL NtDll.dll (mode utilisateur) ; NtosKrnl.exe (mode noyau)