Partager via


FunctionLeave3WithInfo, fonction

Notifie le profileur que le contrôle est retourné d'une fonction et fournit un handle qui peut être passé à la méthode ICorProfilerInfo3::GetFunctionLeave3Info pour extraire le frame de pile et la valeur de retour.

void __stdcall FunctionLeave3WithInfo(
               [in] FunctionIDOrClientID functionIDOrClientID,
               [in] COR_PRF_ELT_INFO eltInfo);

Paramètres

  • functionIDOrClientID
    [in] Identificateur de la fonction à partir de laquelle le contrôle est retourné.

  • eltInfo
    [in] Handle opaque qui représente des informations sur un frame de pile donné. Ce handle est valide uniquement pendant le rappel auquel il est passé.

Notes

La méthode de rappel FunctionLeave3WithInfo notifie le générateur de profils lorsque les fonctions sont appelées, et permet au générateur de profils d'utiliser la méthode ICorProfilerInfo3::GetFunctionLeave3Info pour inspecter la valeur de retour. Pour accéder aux informations de valeur de retour, l'indicateur COR_PRF_ENABLE_FUNCTION_RETVAL doit être défini. Le générateur de profils peut utiliser la méthode ICorProfilerInfo::SetEventMask pour définir les indicateurs d'événement, puis utiliser la méthode ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo pour enregistrer votre implémentation de cette fonction.

La fonction FunctionLeave3WithInfo 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 de FunctionLeave3WithInfo 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 FunctionLeave3WithInfo soit retourné.

La fonction FunctionLeave3WithInfo ne doit pas effectuer d'appels dans du code managé, ni générer de quelque manière que ce soit une 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

Voir aussi

Référence

GetFunctionLeave3Info

FunctionEnter3

FunctionLeave3

FunctionTailcall3

FunctionEnter3WithInfo

FunctionTailcall3WithInfo

SetEnterLeaveFunctionHooks3

SetEnterLeaveFunctionHooks3WithInfo

SetFunctionIDMapper

SetFunctionIDMapper2

Autres ressources

Fonctions statiques globales du profilage

Historique des modifications

Date

Historique

Motif

Octobre 2010

Ajouté __stdcall à la syntaxe.

Commentaires client.