ICorProfilerInfo2
Mise à jour : novembre 2007
Fournit des méthodes que les profileurs de code utilisent pour communiquer avec le Common Language Runtime (CLR) afin de contrôler la surveillance d'événements et demander des informations. L'interface ICorProfilerInfo2 est une extension de l'interface ICorProfilerInfo. Autrement dit, elle fournit de nouvelles méthodes prises en charge dans le .NET Framework version 2.0 et versions ultérieures.
interface ICorProfilerInfo2 : ICorProfilerInfo
{
HRESULT DoStackSnapshot(
[in] ThreadID thread,
[in] StackSnapshotCallback *callback,
[in] ULONG32 infoFlags,
[in] void *clientData,
[in, size_is(contextSize), length_is(contextSize)] BYTE context[],
[in] ULONG32 contextSize);
HRESULT SetEnterLeaveFunctionHooks2(
[in] FunctionEnter2 *pFuncEnter,
[in] FunctionLeave2 *pFuncLeave,
[in] FunctionTailcall2 *pFuncTailcall);
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[]);
HRESULT GetStringLayout(
[out] ULONG *pBufferLengthOffset,
[out] ULONG *pStringLengthOffset,
[out] ULONG *pBufferOffset);
HRESULT GetClassLayout(
[in] ClassID classID,
[in, out] COR_FIELD_OFFSET rFieldOffset[],
[in] ULONG cFieldOffset,
[out] ULONG *pcFieldOffset,
[out] ULONG *pulClassSize);
HRESULT GetClassIDInfo2(
[in] ClassID classId,
[out] ModuleID *pModuleId,
[out] mdTypeDef *pTypeDefToken,
[out] ClassID *pParentClassId,
[in] ULONG32 cNumTypeArgs,
[out] ULONG32 *pcNumTypeArgs,
[out] ClassID typeArgs[]);
HRESULT GetCodeInfo2(
[in] FunctionID functionID,
[in] ULONG32 cCodeInfos,
[out] ULONG32 *pcCodeInfos,
[out, size_is(cCodeInfos), length_is(*pcCodeInfos)]
COR_PRF_CODE_INFO codeInfos[]);
HRESULT GetClassFromTokenAndTypeArgs(
[in] ModuleID moduleID,
[in] mdTypeDef typeDef,
[in] ULONG32 cTypeArgs,
[in, size_is(cTypeArgs)] ClassID typeArgs[],
[out] ClassID* pClassID);
HRESULT GetFunctionFromTokenAndTypeArgs(
[in] ModuleID moduleID,
[in] mdMethodDef funcDef,
[in] ClassID classId,
[in] ULONG32 cTypeArgs,
[in, size_is(cTypeArgs)] ClassID typeArgs[],
[out] FunctionID* pFunctionID);
HRESULT EnumModuleFrozenObjects(
[in] ModuleID moduleID,
[out] ICorProfilerObjectEnum** ppEnum);
HRESULT GetArrayObjectInfo(
[in] ObjectID objectId,
[in] ULONG32 cDimensions,
[out, size_is(cDimensions), length_is(cDimensions)] ULONG32 pDimensionSizes[],
[out, size_is(cDimensions), length_is(cDimensions)] int pDimensionLowerBounds[],
[out] BYTE **ppData);
HRESULT GetBoxClassLayout(
[in] ClassID classId,
[out] ULONG32 *pBufferOffset);
HRESULT GetThreadAppDomain(
[in] ThreadID threadId,
[out] AppDomainID *pAppDomainId);
HRESULT GetRVAStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[out] void **ppAddress);
HRESULT GetAppDomainStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[in] AppDomainID appDomainId,
[out] void **ppAddress);
HRESULT GetThreadStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[in] ThreadID threadId,
[out] void **ppAddress);
HRESULT GetContextStaticAddress(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[in] ContextID contextId,
[out] void **ppAddress);
HRESULT GetStaticFieldInfo(
[in] ClassID classId,
[in] mdFieldDef fieldToken,
[out] COR_PRF_STATIC_TYPE *pFieldInfo);
HRESULT GetGenerationBounds(
[in] ULONG cObjectRanges,
[out] ULONG *pcObjectRanges,
[out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);
HRESULT GetObjectGeneration(
[in] ObjectID objectId,
[out] COR_PRF_GC_GENERATION_RANGE *range);
HRESULT GetNotifiedExceptionClauseInfo(
[out] COR_PRF_EX_CLAUSE_INFO *pinfo);
}
Méthodes
Méthode |
Description |
---|---|
Parcourt la pile du thread spécifié pour signaler les frames d'appels managés au profileur. |
|
Obtient un énumérateur qui permet une itération sur les objets figés dans le module spécifié. |
|
Obtient l'adresse du champ statique de domaine d'application spécifié qui est dans la portée du domaine d'application spécifié. |
|
Obtient des informations détaillées à propos d'un objet tableau. |
|
Obtient des informations relatives à la disposition des classes pour un type valeur spécifié boxed. |
|
Obtient le ClassID d'un type à l'aide du jeton de métadonnées spécifié et les valeurs ClassID d'arguments de type. |
|
Obtient le module parent de la classe générique spécifiée, le jeton de métadonnées pour la classe, le ClassID de sa classe parente et le ClassID pour chaque argument de type, le cas échéant, de la classe. |
|
Obtient des informations sur la disposition, en mémoire, des champs définis par la classe spécifiée. Autrement dit, cette méthode obtient les offsets des champs de la classe. |
|
Obtient les étendues de code natif associées à l'FunctionID spécifié. |
|
Obtient l'adresse du champ statique de contexte spécifié qui est dans la portée du contexte spécifié. |
|
Obtient le FunctionID d'une fonction à l'aide du jeton de métadonnées spécifié, de la classe conteneur et des valeurs ClassID d'arguments de type. |
|
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. |
|
Obtient les régions de la mémoire (les segments du tas) qui composent les générations du tas récupéré par le garbage collector. |
|
Obtient l'adresse native et les informations de frames pour la clause d'exception (catch/finally/filter) qui est sur le point d'être exécutée ou qui vient d'être exécutée. |
|
Obtient le segment du tas qui contient l'objet spécifié. |
|
Obtient l'adresse du champ statique RVA spécifié. |
|
Obtient la portée dans laquelle le champ spécifié est statique. |
|
Obtient des informations sur la disposition d'un objet chaîne. |
|
Obtient l'ID du domaine d'application dans lequel le thread spécifié exécute actuellement du code. |
|
Obtient l'adresse du champ statique de thread spécifié qui est dans la portée du thread spécifié. |
|
Spécifie les fonctions implémentées par le générateur de profils à appeler sur des raccordements « enter », « leave » et « tailcall » de fonctions managées. |
Notes
Un profileur appelle une méthode dans l'interface ICorProfilerInfo2 pour communiquer avec le CLR afin de contrôler la surveillance d'événements et de demander des informations.
Les méthodes de l'interface ICorProfilerInfo2 sont implémentées par le CLR à l'aide du modèle libre de threads. Chaque méthode retourne un HRESULT pour indiquer une réussite ou un échec. Pour obtenir la liste des codes de retour possibles, consultez le fichier CorError.h.
Le CLR passe une interface ICorProfilerInfo2 à chaque profileur de code pendant l'initialisation, à l'aide de l'implémentation du profileur de ICorProfilerCallback::Initialize. Un profileur de code peut ensuite appeler des méthodes de l'interface ICorProfilerInfo2 pour obtenir des informations à propos du code managé en cours d'exécution sous le contrôle du Common Language Runtime.
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : Corprof.idl
Bibliothèque : CorGuids.lib
Versions du .NET Framework : 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0