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 |