Partager via


Fonction RtlInstallFunctionTableCallback (winnt.h)

Ajoute une table de fonctions dynamiques à la liste des tables de fonctions dynamiques.

Syntaxe

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

Paramètres

[in] TableIdentifier

Identificateur du rappel de la table de fonction dynamique. Les deux bits d’ordre inférieur doivent être définis. Par exemple, BaseAddress|0x3.

[in] BaseAddress

Adresse de base de la région de mémoire gérée par la fonction de rappel.

[in] Length

Taille de la région de mémoire gérée par la fonction de rappel, en octets.

[in] Callback

Pointeur vers la fonction de rappel appelée pour récupérer les entrées de table de fonction pour les fonctions dans la région de mémoire spécifiée. Pour obtenir une définition du type PGET_RUNTIME_FUNCTION_CALLBACK , consultez WinNT.h.

[in] Context

Pointeur vers les données définies par l’utilisateur à passer à la fonction de rappel.

[in] OutOfProcessCallbackDll

Pointeur facultatif vers une chaîne qui spécifie le chemin d’accès d’une DLL qui fournit des entrées de table de fonctions qui se trouvent en dehors du processus.

Lorsqu’un débogueur se déroule vers une fonction dans la plage d’adresses gérée par la fonction de rappel, il charge cette DLL et appelle la fonction OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME , dont le type est POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK. Pour plus d’informations, consultez les définitions de ces éléments dans WinNT.h.

Valeur retournée

Si la fonction réussit, la valeur de retour est TRUE. Si la fonction échoue, la valeur de retour est FALSE.

Remarques

Les tables de fonctions sont utilisées sur Windows 64 bits pour déterminer comment décompresser ou parcourir la pile. Ces tables sont généralement générées par le compilateur et stockées dans le cadre de l’image. Toutefois, les applications doivent fournir la table de fonctions pour le code généré dynamiquement. Pour plus d’informations sur les tables de fonctions, consultez le guide d’architecture de votre système.

Cette fonction est utile pour le code très dynamique. L’application spécifie la plage de mémoire pour le code généré, mais n’a pas besoin de générer une table tant qu’une demande de déroulement n’en a pas besoin. À ce moment-là, le système appelle la fonction de rappel avec le contexte et l’adresse de contrôle. La fonction de rappel doit retourner l’entrée de la fonction runtime pour l’adresse spécifiée. Veillez à éviter de créer un interblocage entre la fonction de rappel et le générateur de code.

Pour le code généré à partir d’un modèle ou généré une seule fois pendant la durée du processus, utilisez la fonction RtlAddFunctionTable .

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête winnt.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

RtlAddFunctionTable

RtlDeleteFunctionTable