Share via


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

Siehe auch

RtlAddFunctionTable

RtlDeleteFunctionTable