Compartilhar via


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

Confira também

RtlAddFunctionTable

RtlDeleteFunctionTable