FunctionIDMapper (fonction)
Informe le profileur que l’identificateur donné d’une fonction peut être remappé vers un autre ID à utiliser dans les rappels FunctionEnter2, FunctionLeave2 et FunctionTailcall2 pour cette fonction. FunctionIDMapper
permet également au profileur d'indiquer s'il souhaite recevoir des rappels pour cette fonction.
Syntaxe
UINT_PTR __stdcall FunctionIDMapper (
[in] FunctionID funcId,
[out] BOOL *pbHookFunction
);
Paramètres
funcId
[in] Identificateur de fonction à remapper.
pbHookFunction
[out] Pointeur vers une valeur que le profileur affecte à true
s’il souhaite recevoir les rappels de FunctionEnter2
, FunctionLeave2
et FunctionTailcall2
. Sinon, il 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 nulle produit des résultats imprévisibles, notamment l’arrêt éventuel du processus.
Notes
La fonction FunctionIDMapper
est un rappel. Elle est implémentée par le profileur afin de remapper un ID de fonction à un autre identificateur plus utile pour le profileur. FunctionIDMapper
retourne l’autre ID à utiliser pour une fonction donnée. Le moteur d’exécution traite ensuite la requête du profileur en passant cet autre ID, en plus de l’ID de fonction classique, au profileur dans le paramètre clientData
des crochets FunctionEnter2
, FunctionLeave2
et FunctionTailcall2
afin d’identifier la fonction pour laquelle le crochet est appelé.
Vous pouvez utiliser la méthode ICorProfilerInfo::SetFunctionIDMapper pour spécifier l’implémentation de la fonction FunctionIDMapper
. Vous ne pouvez appeler la méthode ICorProfilerInfo::SetFunctionIDMapper
qu’une seule fois. Nous vous recommandons de le faire dans le rappel de ICorProfilerCallback::Initialize.
Par défaut, il est supposé qu’un profileur qui définit l’indicateur COR_PRF_MONITOR_ENTERLEAVE à l’aide de ICorProfilerInfo::SetEventMask, et qui définit des crochets via ICorProfilerInfo::SetEnterLeaveFunctionHooks ou ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, doit recevoir les rappels de FunctionEnter2
, FunctionLeave2
et FunctionTailcall2
pour chaque fonction. Toutefois, les profileurs peuvent implémenter FunctionIDMapper
afin d’éviter de recevoir ces rappels de manière sélective pour certaines fonctions en affectant la valeur false
à pbHookFunction
.
Les profileurs doivent tolérer les situations où plusieurs threads d’une application profilée appellent simultanément la même méthode/fonction. Dans ce genre de cas, le profileur peut recevoir plusieurs rappels de FunctionIDMapper
pour le même FunctionID
. Le profileur doit être certain de retourner les mêmes valeurs à partir de ce rappel quand il est appelé plusieurs fois avec le même FunctionID
.
Spécifications
Plateformes : Consultez Configuration requise.
Header: CorProf.idl
Bibliothèque : CorGuids.lib
Versions de .NET Framework : Disponible à partir de la version 1.0