FunctionTailcall3WithInfo, fonction
Avertit le profileur que la fonction en cours d’exécution est sur le point d’effectuer un appel de fin à une autre fonction et fournit un handle qui peut être transmis à la méthode ICorProfilerInfo3::GetFunctionTailcall3Info pour récupérer le frame de pile.
Syntaxe
void __stdcall FunctionTailcall3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Paramètres
functionIDOrClientID
[in] Identificateur de la fonction en cours d’exécution qui est sur le point d’effectuer un appel de fin.
eltInfo
[in] Handle opaque qui représente des informations sur un frame de pile donné. Il est valide seulement pendant le rappel auquel il est passé.
Notes
La méthode de rappel FunctionTailcall3WithInfo
avertit le profileur à mesure que les fonctions sont appelées et permet au profileur d’utiliser la méthode ICorProfilerInfo3::GetFunctionTailcall3Info pour inspecter le frame de pile. Pour accéder aux informations du frame de pile, l’indicateur COR_PRF_ENABLE_FRAME_INFO
doit être défini. Le profileur peut utiliser la méthode ICorProfilerInfo::SetEventMask pour définir les indicateurs d’événement, puis utiliser la méthode ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo pour inscrire votre implémentation de cette fonction.
La fonction FunctionTailcall3WithInfo
est un rappel ; vous devez l’implémenter. L’implémentation doit utiliser l’attribut __declspec(naked)
de classe de stockage.
Le moteur d’exécution n’enregistre aucun registre avant d’appeler cette fonction.
Lors de l’entrée, vous devez enregistrer tous les registres que vous utilisez, y compris ceux de l’unité à virgule flottante (FPU).
Lors de la sortie, vous devez restaurer la pile en décochant tous les paramètres qui ont été envoyés par son appelant.
L’implémentation de FunctionTailcall3WithInfo
ne doit pas bloquer, car elle retardera le nettoyage de la mémoire. L’implémentation ne doit pas tenter un nettoyage de la mémoire, car la pile peut ne pas être dans un état convivial de nettoyage de la mémoire. Si un nettoyage de la mémoire est tenté, le runtime bloque jusqu’à ce que FunctionTailcall3WithInfo
soit retourné.
En outre, la fonction FunctionTailcall3WithInfo ne doit pas appeler de code managé ou provoquer une allocation de mémoire managée de toute façon.
Spécifications
Plateformes : Consultez Configuration requise.
Header: CorProf.idl
Bibliothèque : CorGuids.lib
Versions de .NET Framework : Disponible depuis la version 2.0