Función RtlCaptureStackBackTrace (ntifs.h)

La rutina RtlCaptureStackBackTrace captura un seguimiento de pila caminando por la pila y registrando la información de cada fotograma.

Sintaxis

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

Parámetros

[in] FramesToSkip

Número de fotogramas que se van a omitir desde el inicio (punto de llamada actual) del seguimiento posterior.

[in] FramesToCapture

Número de fotogramas que se van a capturar.

[out] BackTrace

Matriz asignada por el autor de la llamada en la que se devuelven punteros a las direcciones de retorno capturadas desde el seguimiento de pila actual.

[out, optional] BackTraceHash

Valor opcional que se puede usar para organizar las tablas hash. Si este parámetro es NULL, RtlCaptureStackBackTrace no calcula y devuelve un valor hash.

Este valor hash se calcula en función de los valores de los punteros devueltos en la matriz BackTrace . Dos seguimientos de pila idénticos generarán valores hash idénticos.

Valor devuelto

Número de marcos capturados.

Comentarios

RtlCaptureStackBackTrace captura un seguimiento de pila para el autor de la llamada caminando por la pila (volviendo en tiempo de llamada) y registrando información para cada fotograma. En concreto, RtlCaptureStackBackTrace devuelve punteros a las direcciones de retorno de cada llamada en la pila, donde el primer puntero de la matriz BackTrace apunta a la dirección de retorno de la llamada más reciente, etc.

Los valores hash de seguimiento posterior se pueden usar para determinar rápidamente si dos seguimientos de pila son idénticos o diferentes. Puede usar el hash devuelto en BackTraceHash para comparar seguimientos de pila. Si no desea usar hashes o desea calcular sus propios valores hash, establezca BackTraceHash en NULL.

Normalmente, en equipos de 64 bits, no se puede capturar la pila del kernel en determinados contextos cuando no se permiten errores de página. Para habilitar la marcha de la pila del kernel en x64, establezca el valor del Registro DisablePagingExecutive Memory Management en 1. El valor del Registro DisablePagingExecutive se encuentra en la siguiente clave del Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Esto solo se debe hacer con fines de diagnóstico temporal porque aumenta el uso de memoria del sistema.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h, FltKernel.h)
Library NtosKrnl.lib; OneCoreUAP.lib en Windows 10
Archivo DLL NtDll.dll (modo de usuario); NtosKrnl.exe (modo kernel)