RtlInstallFunctionTableCallback-Funktion (winnt.h)
Fügt der Liste der dynamischen Funktionstabellen eine dynamische Funktionstabelle hinzu.
Syntax
NTSYSAPI BOOLEAN RtlInstallFunctionTableCallback(
[in] DWORD64 TableIdentifier,
[in] DWORD64 BaseAddress,
[in] DWORD Length,
[in] PGET_RUNTIME_FUNCTION_CALLBACK Callback,
[in] PVOID Context,
[in] PCWSTR OutOfProcessCallbackDll
);
Parameter
[in] TableIdentifier
Der Bezeichner für den Rückruf der dynamischen Funktionstabelle. Die beiden Bits mit niedriger Reihenfolge müssen festgelegt werden. Beispiel : BaseAddress|0x3.
[in] BaseAddress
Die Basisadresse des Speicherbereichs, der von der Rückruffunktion verwaltet wird.
[in] Length
Die Größe des Speicherbereichs, der von der Rückruffunktion verwaltet wird, in Bytes.
[in] Callback
Ein Zeiger auf die Rückruffunktion, die aufgerufen wird, um die Funktionstabelleneinträge für die Funktionen im angegebenen Bereich des Arbeitsspeichers abzurufen. Eine Definition des PGET_RUNTIME_FUNCTION_CALLBACK-Typs finden Sie unter WinNT.h.
[in] Context
Ein Zeiger auf die benutzerdefinierten Daten, die an die Rückruffunktion übergeben werden sollen.
[in] OutOfProcessCallbackDll
Ein optionaler Zeiger auf eine Zeichenfolge, der den Pfad einer DLL angibt, die Funktionstabelleneinträge bereitstellt, die sich außerhalb des Prozesses befinden.
Wenn sich ein Debugger in eine Funktion im Adressbereich entlädt, der von der Rückruffunktion verwaltet wird, lädt er diese DLL und ruft die OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME-Funktion auf, deren Typ POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK ist. Weitere Informationen finden Sie in den Definitionen dieser Elemente in WinNT.h.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE. Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE.
Hinweise
Funktionstabellen werden unter 64-Bit-Windows verwendet, um zu bestimmen, wie der Stapel entladen oder durchlaufen werden soll. Diese Tabellen werden normalerweise vom Compiler generiert und als Teil des Images gespeichert. Anwendungen müssen jedoch die Funktionstabelle für dynamisch generierten Code bereitstellen. Weitere Informationen zu Funktionstabellen finden Sie im Architekturhandbuch für Ihr System.
Diese Funktion ist für sehr dynamischen Code nützlich. Die Anwendung gibt den Speicherbereich für den generierten Code an, muss aber erst dann eine Tabelle generieren, wenn sie durch eine Entladungsanforderung benötigt wird. Zu diesem Zeitpunkt ruft das System die Rückruffunktion mit dem Kontext und der Steuerelementadresse auf. Die Rückruffunktion muss den Laufzeitfunktionseintrag für die angegebene Adresse zurückgeben. Vermeiden Sie das Erstellen eines Deadlocks zwischen der Rückruffunktion und dem Codegenerator.
Für Code, der aus einer Vorlage generiert oder nur einmal während der Lebensdauer des Prozesses generiert wird, verwenden Sie die Funktion RtlAddFunctionTable .
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | winnt.h (Einschließen von Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |