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) |