FunctionIDMapper, fonction
Mise à jour : novembre 2007
Informe le profileur que l'identificateur donné d'une fonction peut être remappé à un autre ID à utiliser dans les rappels enter2/leave2/tailcall2 pour cette fonction. Cette méthode 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 enter(2)/leave(2)/tailcall(2) ; 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 enter2/leave2/tailcall2, 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 enter(2)/leave(2)/tailcall(2) pour chaque fonction. Les profileurs peuvent toutefois implémenter FunctionIDMapper pour éviter de manière sélective à recevoir ces rappels pour certaines fonctions en affectant 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 : 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