FunctionLeave2 (fonction)
Informe le profileur qu'une fonction va retourner à l'appelant et fournit des informations sur le frame de pile et la valeur de retour de fonction.
void __stdcall FunctionLeave2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_RANGE *retvalRange
);
Paramètres
funcId
[in] Identificateur de la fonction qui retourne.clientData
[in] Identificateur de fonction remappé préalablement spécifié par le profileur via la fonction FunctionIDMapper.func
[in] Valeur COR_PRF_FRAME_INFO qui pointe vers les informations sur le frame de pile.Le profileur doit le traiter en tant que handle opaque qui peut être renvoyé au moteur d'exécution dans la méthode ICorProfilerInfo2::GetFunctionInfo2.
retvalRange
[in] Pointeur vers une structure COR_PRF_FUNCTION_ARGUMENT_RANGE qui spécifie l'emplacement de mémoire de la valeur de retour de la fonction.Pour accéder aux informations de valeur de retour, l'indicateur COR_PRF_ENABLE_FUNCTION_RETVAL doit être défini. Le profileur peut utiliser la méthode ICorProfilerInfo::SetEventMask pour définir les indicateurs d'événement.
Notes
Les valeurs des paramètres func et retvalRange ne sont pas valides après le retour de la fonction FunctionLeave2 parce que les valeurs peuvent changer ou être détruites.
La fonction FunctionLeave2 est un rappel ; vous devez l'implémenter. L'implémentation doit utiliser l'attribut de classe de stockage __declspec (naked).
Le moteur d'exécution n'enregistre aucun registre avant d'appeler cette fonction.
À l'entrée, vous devez enregistrer tous les registres que vous utilisez, y compris ceux de l'unité en virgule flottante.
À la sortie, vous devez restaurer la pile en dépilant tous les paramètres qui ont fait l'objet d'un push par son appelant.
L'implémentation du FunctionLeave2 ne doit pas bloquer, car cela diffèrerait le garbage collection. L'implémentation ne doit pas tenter de garbage collection, car la pile n'est peut-être pas dans un état de garbage collection convivial. En cas de tentative de garbage collection, le runtime procède à un blocage jusqu'à ce que FunctionLeave2 soit retourné.
De plus, la fonction FunctionLeave2 ne doit pas effectuer d'appels dans du code managé, ni générer de quelque manière que ce soit une l'allocation de mémoire managée.
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : Corprof.idl
Bibliothèque : CorGuids.lib
Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
Voir aussi
Référence
ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, méthode
Autres ressources
Fonctions statiques globales du profilage
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Octobre 2010 |
Ajouté __stdcall à la syntaxe. |
Commentaires client. |