Condividi tramite


Funzione RtlInstallFunctionTableCallback (winnt.h)

Aggiunge una tabella di funzioni dinamiche all'elenco di tabelle delle funzioni dinamiche.

Sintassi

NTSYSAPI BOOLEAN RtlInstallFunctionTableCallback(
  [in] DWORD64                        TableIdentifier,
  [in] DWORD64                        BaseAddress,
  [in] DWORD                          Length,
  [in] PGET_RUNTIME_FUNCTION_CALLBACK Callback,
  [in] PVOID                          Context,
  [in] PCWSTR                         OutOfProcessCallbackDll
);

Parametri

[in] TableIdentifier

Identificatore del callback della tabella di funzioni dinamiche. I due bit di ordine basso devono essere impostati. Ad esempio, BaseAddress|0x3.

[in] BaseAddress

Indirizzo di base dell'area di memoria gestita dalla funzione di callback.

[in] Length

Dimensioni dell'area di memoria gestita dalla funzione di callback, in byte.

[in] Callback

Puntatore alla funzione di callback chiamata per recuperare le voci della tabella delle funzioni per le funzioni nell'area di memoria specificata. Per una definizione del tipo di PGET_RUNTIME_FUNCTION_CALLBACK , vedere WinNT.h.

[in] Context

Puntatore ai dati definiti dall'utente da passare alla funzione di callback.

[in] OutOfProcessCallbackDll

Puntatore facoltativo a una stringa che specifica il percorso di una DLL che fornisce voci di tabella delle funzioni esterne al processo.

Quando un debugger si rimuove a una funzione nell'intervallo di indirizzi gestiti dalla funzione di callback, carica questa DLL e chiama la funzione OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME , il cui tipo è POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK. Per altre informazioni, vedere le definizioni di questi elementi in WinNT.h.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è TRUE. Se la funzione ha esito negativo, il valore restituito è FALSE.

Commenti

Le tabelle delle funzioni vengono usate in Windows a 64 bit per determinare come rimuovere o camminare lo stack. Queste tabelle vengono in genere generate dal compilatore e archiviate come parte dell'immagine. Tuttavia, le applicazioni devono fornire la tabella delle funzioni per il codice generato in modo dinamico. Per altre informazioni sulle tabelle delle funzioni, vedere la guida all'architettura per il sistema.

Questa funzione è utile per il codice molto dinamico. L'applicazione specifica l'intervallo di memoria per il codice generato, ma non deve generare una tabella finché non è necessaria da una richiesta di rimozione. In quel momento, il sistema chiama la funzione di callback con context e l'indirizzo del controllo. La funzione di callback deve restituire la voce della funzione di runtime per l'indirizzo specificato. Assicurarsi di evitare di creare un deadlock tra la funzione di callback e il generatore di codice.

Per il codice generato da un modello o generato una sola volta durante la durata del processo, usare la funzione RtlAddFunctionTable .

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione winnt.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

RtlAddFunctionTable

RtlDeleteFunctionTable