Função RtlInstallFunctionTableCallback (winnt.h)
Adiciona uma tabela de funções dinâmicas à lista de tabelas de funções dinâmicas.
Sintaxe
NTSYSAPI BOOLEAN RtlInstallFunctionTableCallback(
[in] DWORD64 TableIdentifier,
[in] DWORD64 BaseAddress,
[in] DWORD Length,
[in] PGET_RUNTIME_FUNCTION_CALLBACK Callback,
[in] PVOID Context,
[in] PCWSTR OutOfProcessCallbackDll
);
Parâmetros
[in] TableIdentifier
O identificador do retorno de chamada da tabela de funções dinâmicas. Os dois bits de ordem baixa devem ser definidos. Por exemplo, BaseAddress|0x3.
[in] BaseAddress
O endereço base da região da memória gerenciada pela função de retorno de chamada.
[in] Length
O tamanho da região da memória gerenciada pela função de retorno de chamada, em bytes.
[in] Callback
Um ponteiro para a função de retorno de chamada que é chamada para recuperar as entradas da tabela de funções para as funções na região de memória especificada. Para obter uma definição do tipo PGET_RUNTIME_FUNCTION_CALLBACK , consulte WinNT.h.
[in] Context
Um ponteiro para os dados definidos pelo usuário a serem passados para a função de retorno de chamada.
[in] OutOfProcessCallbackDll
Um ponteiro opcional para uma cadeia de caracteres que especifica o caminho de uma DLL que fornece entradas de tabela de funções que estão fora do processo.
Quando um depurador desenrola para uma função no intervalo de endereços gerenciados pela função de retorno de chamada, ele carrega essa DLL e chama a função OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME , cujo tipo é POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK. Para obter mais informações, consulte as definições desses itens em WinNT.h.
Retornar valor
Se a função for bem-sucedida, o valor retornado será TRUE. Se a função falhar, o valor retornado será FALSE.
Comentários
As tabelas de funções são usadas no Windows de 64 bits para determinar como desenrolar ou andar na pilha. Essas tabelas geralmente são geradas pelo compilador e armazenadas como parte da imagem. No entanto, os aplicativos devem fornecer a tabela de funções para código gerado dinamicamente. Para obter mais informações sobre tabelas de funções, consulte o guia de arquitetura do sistema.
Essa função é útil para código muito dinâmico. O aplicativo especifica o intervalo de memória para o código gerado, mas não precisa gerar uma tabela até que ela seja necessária para uma solicitação de desenrolamento. Nesse momento, o sistema chama a função de retorno de chamada com o Contexto e o endereço de controle. A função de retorno de chamada deve retornar a entrada de função de runtime para o endereço especificado. Evite criar um deadlock entre a função de retorno de chamada e o gerador de código.
Para código gerado a partir de um modelo ou gerado apenas uma vez durante a vida útil do processo, use a função RtlAddFunctionTable .
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | winnt.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |