FunctionIDMapper (fonction)
Informe le profileur que l'identificateur d'une fonction peut être remappé vers un autre ID à utiliser dans les rappels FunctionEnter2FunctionLeave2 et FunctionTailcall2 pour cette fonction. FunctionIDMapper permet également au profileur d'indiquer s'il souhaite recevoir des rappels pour cette fonction.
UINT_PTR __stdcall FunctionIDMapper (
[in] FunctionID funcId,
[out] BOOL *pbHookFunction
);
Paramètres
funcId
[in] Identificateur de la fonction à remapper.pbHookFunction
[out] Pointeur vers une valeur à laquelle le profileur affecte true s'il souhaite recevoir des rappels FunctionEnter2, FunctionLeave2 et FunctionTailcall2 ; sinon, le profileur affecte false à cette valeur.
Valeur de retour
Le profileur retourne une valeur que le moteur d'exécution utilise comme autre identificateur de fonction. La valeur de retour ne peut pas être null, sauf si false est retourné dans pbHookFunction. Sinon, une valeur de retour null génèrera des résultats imprévisibles, pouvant aller jusqu'à l'arrêt du processus.
Notes
La fonction FunctionIDMapper est un rappel. Elle est implémentée par le profileur pour remapper un ID de fonction à un autre identificateur qui est plus utile pour le profileur. Le FunctionIDMapper retourne l'autre ID à utiliser pour toute fonction donnée. Le moteur d'exécution répond ensuite à la demande du profileur en retournant cet autre ID, en plus de l'ID de fonction classique, au profileur dans le paramètre clientData des raccordements FunctionEnter2, FunctionLeave2, and FunctionTailcall2, de manière à identifier la fonction pour laquelle le raccordement est appelé.
Vous pouvez utiliser la méthode ICorProfilerInfo::SetFunctionIDMapper pour spécifier l'implémentation de la fonction FunctionIDMapper. Vous pouvez appeler la méthode ICorProfilerInfo::SetFunctionIDMapper à une seule reprise. Il est recommandé de l'appeler dans le rappel ICorProfilerCallback::Initialize.
Par défaut, un profileur qui définit l'indicateur COR_PRF_MONITOR_ENTERLEAVE à l'aide d'ICorProfilerInfo::SetEventMask et qui définit des raccordements via ICorProfilerInfo::SetEnterLeaveFunctionHooks ou ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, est censé recevoir les rappels FunctionEnter2, FunctionLeave2 et FunctionTailcall2 pour chaque fonction. Les profileurs peuvent toutefois implémenter FunctionIDMapper de façon à éviter de manière sélective de recevoir ces rappels pour certaines fonctions en affectant la valeur false à pbHookFunction.
Les profileurs doivent tolérer les cas où plusieurs threads d'une application profilée appellent simultanément la même méthode/fonction. Dans de tels cas, le profileur peut recevoir plusieurs rappels FunctionIDMapper pour le même FunctionID. Le profileur doit être certain de retourner les mêmes valeurs à partir de ce rappel lorsqu'il est appelé à plusieurs reprises avec le même FunctionID.
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, 1.1, 1.0
Voir aussi
Référence
ICorProfilerInfo::SetFunctionIDMapper, méthode