Função RtlVirtualUnwind (winnt.h)
Recupera o contexto de invocação da função que precede o contexto de função especificado.
Observação
Essa função não é implementada em todas as plataformas de processador e a implementação é diferente em cada plataforma que dá suporte a ela. O protótipo a seguir lista todos os parâmetros potenciais e seu aplicativo. Leia mais sobre protótipos de função específicos do processador.
Sintaxe
NTSYSAPI PEXCEPTION_ROUTINE RtlVirtualUnwind(
[in] DWORD HandlerType,
[in] DWORD64 ImageBase,
[in] DWORD64 ControlPc,
[in] PRUNTIME_FUNCTION FunctionEntry,
[in, out] PCONTEXT ContextRecord,
[out] PVOID *HandlerData,
[out] PDWORD64 EstablisherFrame,
[in, out, optional] PKNONVOLATILE_CONTEXT_POINTERS ContextPointers
);
Parâmetros
[in] HandlerType
O tipo de manipulador. Esse parâmetro pode usar um dos valores a seguir.
Esse parâmetro só está presente no x64.
[in] ImageBase
O endereço base do módulo ao qual a função pertence.
[in] ControlPc
O endereço virtual em que o controle deixou a função especificada.
[in] FunctionEntry
O endereço da entrada da tabela de funções para a função especificada. Para obter a entrada da tabela de funções, chame a função RtlLookupFunctionEntry .
[in, out] ContextRecord
Um ponteiro para uma estrutura CONTEXT que representa o contexto do quadro anterior.
[out] HandlerData
O local do computador. Se esse parâmetro for 0, o computador estará no prólogo, epílogo ou uma região de quadro nulo da função. Se esse parâmetro for 1, o computador estará no corpo da função.
Esse parâmetro não está presente no x64.
[out] EstablisherFrame
Um ponteiro para uma estrutura FRAME_POINTERS que recebe o valor do ponteiro de quadro do estabelecidor. O ponteiro de quadro real será definido somente se InFunction for 1
.
Esse parâmetro é do tipo PULONG64 em x64.
[in, out, optional] ContextPointers
Um ponteiro opcional para uma estrutura de ponteiros de contexto.
Retornar valor
Essa função retorna um ponteiro para uma função de retorno de chamada EXCEPTION_ROUTINE .
Comentários
A lista completa de marcadores de epílogo para x64 é a seguinte:
- Ret
- ret n
- rep ret
- jmp imm8 | imm32 em que o destino está fora da função sendo desenrolada
- jmp qword ptr imm32
- rex.w jmp reg
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | winnt.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |