Partager via


FunctionEnter2 (fonction)

Informe le profileur que le contrôle est passé à une fonction et fournit des informations sur le frame de pile et les arguments de fonction. Cette fonction remplace la fonction FunctionEnter.

void __stdcall FunctionEnter2 (
    [in]  FunctionID                       funcId, 
    [in]  UINT_PTR                         clientData, 
    [in]  COR_PRF_FRAME_INFO               func, 
    [in]  COR_PRF_FUNCTION_ARGUMENT_INFO  *argumentInfo
);

Paramètres

  • funcId
    [in] Identificateur de la fonction à laquelle le contrôle est passé.

  • clientData
    [in] Identificateur de fonction remappé, avec le profileur préalablement spécifié à l'aide de 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.

  • argumentInfo
    [in] Pointeur vers une structure COR_PRF_FUNCTION_ARGUMENT_INFO qui spécifie les emplacements en mémoire des arguments de la fonction.

    Pour accéder à des informations sur les arguments, l'indicateur COR_PRF_ENABLE_FUNCTION_ARGS 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 argumentInfo ne sont pas valides après le retour de la fonction FunctionEnter2 parce que les valeurs peuvent changer ou être détruites.

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

De plus, la fonction FunctionEnter2 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, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Référence

FunctionLeave2 (fonction)

FunctionTailcall2 (fonction)

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.