Função RtlCaptureStackBackTrace (ntifs.h)

A rotina RtlCaptureStackBackTrace captura um rastreamento de pilha percorrendo a pilha e gravando as informações para cada quadro.

Sintaxe

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

Parâmetros

[in] FramesToSkip

Número de quadros a serem ignoradas do início (ponto de chamada atual) do rastreamento de fundo.

[in] FramesToCapture

Número de quadros a serem capturados.

[out] BackTrace

Matriz alocada pelo chamador na qual os ponteiros para os endereços de retorno capturados do rastreamento de pilha atual são retornados.

[out, optional] BackTraceHash

Valor opcional que pode ser usado para organizar tabelas de hash. Se esse parâmetro for NULL, RtlCaptureStackBackTrace não calculará e retornará um valor de hash.

Esse valor de hash é calculado com base nos valores dos ponteiros retornados na matriz BackTrace . Dois rastreamentos de pilha idênticos gerarão valores de hash idênticos.

Retornar valor

O número de quadros capturados.

Comentários

RtlCaptureStackBackTrace captura um rastreamento de pilha para o chamador andando na pilha (voltando no tempo de chamada) e gravando informações para cada quadro. Especificamente, RtlCaptureStackBackTrace retorna ponteiros para os endereços de retorno de cada chamada na pilha, em que o primeiro ponteiro na matriz BackTrace aponta para o endereço de retorno da chamada mais recente e assim por diante.

Os valores de hash de rastreamento traseiro podem ser usados para determinar rapidamente se dois rastreamentos de pilha são idênticos ou diferentes. Você pode usar o hash retornado em BackTraceHash para comparar rastreamentos de pilha. Se você não quiser usar hashes ou quiser calcular seus próprios valores de hash, defina BackTraceHash como NULL.

Normalmente, em computadores de 64 bits, você não pode capturar a pilha de kernel em determinados contextos quando falhas de página não são permitidas. Para habilitar a movimentação da pilha de kernel em x64, defina o valor do Registro de Gerenciamento de Memória DisablePagingExecutive como 1. O valor do Registro DisablePagingExecutive está localizado sob a seguinte chave do Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Isso só deve ser feito para fins de diagnóstico temporário porque aumenta o uso de memória do sistema.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h, FltKernel.h)
Biblioteca NtosKrnl.lib; OneCoreUAP.lib no Windows 10
DLL NtDll.dll (modo de usuário); NtosKrnl.exe (modo kernel)