ICorProfilerInfo2::GetFunctionInfo2, méthode

Obtient la classe parente, le jeton de métadonnées et le ClassID de chaque argument de type, le cas échéant, d’une fonction.

Syntaxe

HRESULT GetFunctionInfo2(  
    [in]  FunctionID funcId,  
    [in]  COR_PRF_FRAME_INFO frameInfo,  
    [out] ClassID *pClassId,  
    [out] ModuleID *pModuleId,  
    [out] mdToken *pToken,  
    [in]  ULONG32 cTypeArgs,  
    [out] ULONG32 *pcTypeArgs,  
    [out] ClassID typeArgs[]);  

Paramètres

funcId
[in] ID de la fonction pour laquelle obtenir la classe parente et d'autres informations.

frameInfo
[in] Valeur COR_PRF_FRAME_INFO qui pointe vers les informations sur un frame de pile.

pClassId
[out] Pointeur vers la classe parente de la fonction.

pModuleId
[out] Pointeur vers le module dans lequel la classe parente de la fonction est définie.

pToken
[out] Pointeur vers le jeton de métadonnées de la fonction.

cTypeArgs
[in] Taille du tableau typeArgs.

pcTypeArgs
[out] Pointeur vers le nombre total de valeurs ClassID.

typeArgs
[out] Tableau de valeurs ClassID qui représentent chacune l'ID d'un argument de type de la fonction. Suite au retour de la méthode, typeArgs contient une partie ou la totalité des valeurs ClassID.

Notes

Le code du profileur peut appeler ICorProfilerInfo::GetModuleMetaData pour obtenir une interface de métadonnées pour un module donné. Le jeton de métadonnées qui est retourné à l'emplacement référencé par pToken peut alors servir à accéder aux métadonnées pour la fonction.

L'ID de classe et les arguments de type retournés via les paramètres pClassId et typeArgs dépendent de la valeur qui est passée dans le paramètre frameInfo, comme indiqué dans le tableau suivant.

Valeur du paramètre frameInfo. Résultats
Valeur COR_PRF_FRAME_INFO obtenue d'un rappel FunctionEnter2 La valeur ClassID, retournée dans l'emplacement référencé par pClassId, et tous les arguments de type, retournés dans le tableau typeArgs, seront exacts.
COR_PRF_FRAME_INFO obtenu à partir d'une source autre qu'un rappel FunctionEnter2 La valeur ClassID et les arguments de type exacts ne peuvent pas être déterminés. Autrement dit, la valeur ClassID peut être null et certains arguments de type peuvent être retournés comme Object.
Zéro La valeur ClassID et les arguments de type exacts ne peuvent pas être déterminés. Autrement dit, la valeur ClassID peut être null et certains arguments de type peuvent être retournés comme Object.

Suite au retour de GetFunctionInfo2, vous devez vérifier que le tampon typeArgs est suffisamment grand pour contenir toutes les valeurs ClassID. Pour ce faire, comparez la valeur vers laquelle pcTypeArgs pointe à celle du paramètre cTypeArgs. Si pcTypeArgs pointe vers une valeur supérieure à cTypeArgs divisée par la taille d'une valeur ClassID, allouez une mémoire tampon pcTypeArgs plus grande, mettez à jour cTypeArgs pour refléter la nouvelle taille et rappelez GetFunctionInfo2.

Vous pouvez également commencer par appeler GetFunctionInfo2 avec un tampon pcTypeArgs de longueur nulle pour obtenir la taille correcte du tampon. Vous pouvez ensuite affecter à la taille de la mémoire tampon la valeur retournée dans pcTypeArgs divisée par la taille d'une valeur ClassID et rappeler GetFunctionInfo2.

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : CorProf.idl, CorProf.h

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi