Partager via


FunctionLeave2 (fonction)

Avertit le profileur qu’une fonction est sur le point de revenir à l’appelant et fournit des informations sur le frame de pile et la valeur de retour de fonction.

Syntaxe

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 retournée.

clientData [in] Identificateur de fonction remappée, que le profileur a précédemment spécifiée via la fonction FunctionIDMapper.

func [in] Valeur COR_PRF_FRAME_INFO qui pointe vers des informations concernant un frame de pile.

Le profileur doit traiter cela comme un descripteur opaque qui peut être passé au moteur d’exécution dans la méthode ICorProfilerInfo2::GetFunctionInfo2.

retvalRange Pointeur vers une structure COR_PRF_FUNCTION_ARGUMENT_RANGE qui spécifie l’emplacement en mémoire de la valeur de retour de la fonciton.

Pour accéder aux informations de la valeur renvoyée, 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 une fois que la fonction FunctionLeave2 est retournée, car elles 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.

  • 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 FunctionLeave2 ne doit pas bloquer, car cela retarderait le garbage collection. L’implémentation ne doit pas tenter un garbage collection, car la pile peut ne pas être dans un état compatible avec le garbage collection. Si un garbage collection est tenté, le runtime bloque jusqu’à ce que FunctionLeave2 soit retourné.

En outre, la fonction FunctionLeave2 ne doit absolument pas appeler de code managé ni entraîner, de quelque manière, une allocation de mémoire managée.

Spécifications

Plateformes : Consultez Configuration requise.

Header: CorProf.idl

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi