FunctionEnter2 (fonction)
Avertit 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.
Syntaxe
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ée, que le profileur a précédemment spécifiée à l’aide de 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.
argumentInfo
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 aux informations d’argument, 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 une fois que la fonction FunctionEnter2
est retournée, car elles 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.
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 FunctionEnter2
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 FunctionEnter2
soit retourné.
En outre, la fonction FunctionEnter2
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