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