Partager via


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

Voir aussi