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 |