Partager via


ICorProfilerInfo2::GetFunctionInfo2, méthode

Obtient la classe parente, le jeton de métadonnées et le ClassID de chaque argument de type, s'ils sont présents, pour une fonction.

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 correspondent chacune à l'ID d'un argument de type de la fonction. Lorsque la méthode retourne, typeArgs en contiendra une partie ou la totalité des valeurs ClassID.

Notes

Le profileur de code peut appeler ICorProfilerInfo::GetModuleMetaData pour obtenir une interface metadata pour un module donné. Ensuite, le jeton de métadonnées retourné à l'emplacement référencé par pToken peut être utilisé afin d'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ésultat

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.

Une fois la valeur de GetFunctionInfo2 retournée, vous devez vérifier que la taille de la mémoire tampon typeArgs était suffisante pour contenir toutes les valeurs ClassID. Pour ce faire, comparez la valeur pointée par pcTypeArgs avec 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 avec la nouvelle taille plus grande et appelez de nouveau la méthode GetFunctionInfo2.

Vous pouvez également commencer par appeler GetFunctionInfo2 avec une mémoire tampon pcTypeArgs dont la taille est nulle pour obtenir la taille correcte de la mémoire tampon. Vous pouvez définir ensuite la taille de la mémoire tampon à la valeur retournée dans pcTypeArgs divisée par la taille d'une valeur ClassID, et appeler de nouveau GetFunctionInfo2.

Pour plus d'informations sur ces deux méthodes, consultez Conventions de méthode de l'API de profilage.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

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

Bibliothèque : CorGuids.lib

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Référence

ICorProfilerInfo, interface

ICorProfilerInfo2, interface

Autres ressources

Interfaces de profilage

Profilage (Référence des API non managées)