Compartir a través de


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 omitirán 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 la pila actual.

[out, optional] BackTraceHash

Valor opcional que se puede usar para organizar 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 de BackTrace. Dos seguimientos de pila idénticos generarán valores hash idénticos.

Valor devuelto

Número de fotogramas capturados.

Observaciones

RtlCaptureStackBackTrace captura un seguimiento de pila para el autor de la llamada caminando a la pila (caminando de nuevo en el tiempo de llamada) y registrando información para cada fotograma. En concreto, RtlCaptureStackBackTrace devuelve punteros a las direcciones de retorno de cada llamada de 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 de kernel en determinados contextos cuando no se permiten errores de página. Para habilitar el recorrido 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 debe hacerse con fines de diagnóstico temporal porque aumenta el uso de memoria del sistema.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP
de la plataforma de destino de Universal
encabezado de ntifs.h (incluya Ntifs.h, FltKernel.h)
biblioteca de NtosKrnl.lib; OneCoreUAP.lib en Windows 10
DLL de NtDll.dll (modo de usuario); NtosKrnl.exe (modo kernel)