ICorProfilerInfo
Mise à jour : novembre 2007
Fournit des méthodes que les profileurs de code utilisent pour communiquer avec le Common Language Runtime (CLR) pour contrôler la surveillance d'événements et demander des informations.
Remarque : |
---|
Chaque méthode de l'interface ICorProfilerInfo retourne un HRESULT pour indiquer une réussite ou un échec. Consultez le fichier CorError.h pour obtenir la liste des codes de retour possibles. |
interface ICorProfilerInfo : IUnknown
{
HRESULT GetClassFromObject(
[in] ObjectID objectId,
[out] ClassID *pClassId);
HRESULT GetClassFromToken(
[in] ModuleID moduleId,
[in] mdTypeDef typeDef,
[out] ClassID *pClassId);
HRESULT GetCodeInfo(
[in] FunctionID functionId,
[out] LPCBYTE *pStart,
[out] ULONG *pcSize);
HRESULT GetEventMask(
[out] DWORD *pdwEvents);
HRESULT GetFunctionFromIP(
[in] LPCBYTE ip,
[out] FunctionID *pFunctionId);
HRESULT GetFunctionFromToken(
[in] ModuleID moduleId,
[in] mdToken token,
[out] FunctionID *pFunctionId);
HRESULT GetHandleFromThread(
[in] ThreadID threadId,
[out] HANDLE *phThread);
HRESULT GetObjectSize(
[in] ObjectID objectId,
[out] ULONG *pcSize);
HRESULT IsArrayClass(
[in] ClassID classId,
[out] CorElementType *pBaseElemType,
[out] ClassID *pBaseClassId,
[out] ULONG *pcRank);
HRESULT GetThreadInfo(
[in] ThreadID threadId,
[out] DWORD *pdwWin32ThreadId);
HRESULT GetCurrentThreadID(
[out] ThreadID *pThreadId);
HRESULT GetClassIDInfo(
[in] ClassID classId,
[out] ModuleID *pModuleId,
[out] mdTypeDef *pTypeDefToken);
HRESULT GetFunctionInfo(
[in] FunctionID functionId,
[out] ClassID *pClassId,
[out] ModuleID *pModuleId,
[out] mdToken *pToken);
HRESULT SetEventMask(
[in] DWORD dwEvents);
HRESULT SetEnterLeaveFunctionHooks(
[in] FunctionEnter *pFuncEnter,
[in] FunctionLeave *pFuncLeave,
[in] FunctionTailcall *pFuncTailcall);
HRESULT SetFunctionIDMapper(
[in] FunctionIDMapper *pFunc);
HRESULT GetTokenAndMetaDataFromFunction(
[in] FunctionID functionId,
[in] REFIID riid,
[out] IUnknown **ppImport,
[out] mdToken *pToken);
HRESULT GetModuleInfo(
[in] ModuleID moduleId,
[out] LPCBYTE *ppBaseLoadAddress,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] AssemblyID *pAssemblyId);
HRESULT GetModuleMetaData(
[in] ModuleID moduleId,
[in] DWORD dwOpenFlags,
[in] REFIID riid,
[out] IUnknown **ppOut);
HRESULT GetILFunctionBody(
[in] ModuleID moduleId,
[in] mdMethodDef methodId,
[out] LPCBYTE *ppMethodHeader,
[out] ULONG *pcbMethodSize);
HRESULT GetILFunctionBodyAllocator(
[in] ModuleID moduleId,
[out] IMethodMalloc **ppMalloc);
HRESULT SetILFunctionBody(
[in] ModuleID moduleId,
[in] mdMethodDef methodid,
[in] LPCBYTE pbNewILMethodHeader);
HRESULT GetAppDomainInfo(
[in] AppDomainID appDomainId,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] ProcessID *pProcessId);
HRESULT GetAssemblyInfo(
[in] AssemblyID assemblyId,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] AppDomainID *pAppDomainId,
[out] ModuleID *pModuleId);
HRESULT SetFunctionReJIT(
[in] FunctionID functionId);
HRESULT ForceGC();
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[] );
HRESULT GetInprocInspectionInterface(
[out] IUnknown **ppicd);
HRESULT GetInprocInspectionIThisThread(
[out] IUnknown **ppicd);
HRESULT GetThreadContext(
[in] ThreadID threadId,
[out] ContextID *pContextId);
HRESULT BeginInprocDebugging(
[in] BOOL fThisThreadOnly,
[out] DWORD *pdwProfilerContext);
HRESULT EndInprocDebugging(
[in] DWORD dwProfilerContext);
HRESULT GetILToNativeMapping(
[in] FunctionID functionId,
[in] ULONG32 cMap,
[out] ULONG32 *pcMap,
[out, size_is(cMap), length_is(*pcMap)]
COR_DEBUG_IL_TO_NATIVE_MAP map[]);
}
Méthodes
Méthode |
Description |
---|---|
Initialise la prise en charge du débogage en cours de processus. Cette méthode est obsolète dans la version 2.0 du .NET Framework. |
|
Arrête une session de débogage en cours de processus. Cette méthode est obsolète dans la version 2.0 du .NET Framework. |
|
Force le garbage collection dans le runtime. |
|
Obtient des informations sur le domaine d'application spécifié. |
|
Obtient des informations à propos de l'assembly spécifié. |
|
Obtient le ClassID d'un objet, compte tenu de son ObjectID. |
|
Obtient l'ID de la classe, d'après le jeton de métadonnées. Cette méthode est obsolète dans la version 2.0 du .NET Framework. Utilisez à la place la méthode ICorProfilerInfo2::GetClassFromTokenAndTypeArgs. |
|
Obtient le module parent et le jeton de métadonnées pour la classe spécifiée. |
|
Obtient l'étendue de code natif associée à l'ID de fonction spécifié. Cette méthode est obsolète. Utilisez à la place la méthode ICorProfilerInfo2::GetCodeInfo2. |
|
Obtient l'ID du thread actuel, s'il s'agit d'un thread managé. |
|
Obtient les catégories d'événement actuelles pour lesquelles le profileur souhaite recevoir des notifications d'événement du CLR. |
|
Mappe un pointeur d'instructions de code managé à un FunctionID. |
|
Obtient l'ID d'une fonction. Cette méthode est obsolète dans la version 2.0 du .NET Framework. Utilisez à la place la méthode ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs. |
|
Obtient la classe parente et le jeton de métadonnées pour la fonction spécifiée. |
|
Mappe l'ID d'un thread à un handle de thread Win32. |
|
Obtient un pointeur vers le corps d'une méthode dans le code MSIL (Microsoft Intermediate Language), à partir de son en-tête. |
|
Obtient une interface qui fournit une méthode pour allouer de la mémoire en vue de permuter le corps d'une méthode en code MSIL. |
|
Obtient un mappage entre les offsets MSIL et les offsets natifs pour le code contenu dans la fonction spécifiée. |
|
Obtient un objet qui peut être interrogé pour une interface ICorDebugProcess. Cette méthode est obsolète dans la version 2.0 du .NET Framework. |
|
Obtient un objet qui peut être interrogé pour l'interface ICorDebugThread. Cette méthode est obsolète dans la version 2.0 du .NET Framework. |
|
Obtient des informations à propos du module spécifié. |
|
Obtient une instance d'interface de métadonnées qui mappe au module spécifié. |
|
Obtient la taille d'un objet spécifié. |
|
Obtient l'identité de contexte actuellement associée au thread spécifié. |
|
Obtient l'identité de thread Win32 actuelle pour le thread spécifié. |
|
Obtient le jeton de métadonnées et une instance de l'interface de métadonnées pouvant être utilisés avec le jeton pour la fonction spécifiée. |
|
Détermine si la classe spécifiée est une classe de tableau. |
|
Spécifie les fonctions implémentées par le profileur à appeler sur des raccordements « enter », « leave » et « tailcall » de fonctions managées. |
|
Définit une valeur qui spécifie les types d'événements pour lesquels le profileur souhaite recevoir une notification du CLR. |
|
Spécifie la fonction implémentée par le profileur qui sera appelée pour mapper les valeurs FunctionID aux autres valeurs, lesquelles sont passées aux raccordements d'entrée ou de sortie de la fonction du profileur. |
|
Pas implémenté. Ne pas utiliser. |
|
Remplace le corps de la fonction spécifiée dans le module spécifié. |
|
Spécifie le mappage des offsets du code MSIL d'origine d'une fonction spécifiée aux nouveaux offsets du code MSIL modifié par le profileur d'une fonction. |
Notes
Un profileur appelle une méthode dans l'interface ICorProfilerInfo 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 ICorProfilerInfo 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. Consultez le fichier CorError.h pour obtenir la liste des codes de retour possibles.
Le CLR passe, via l'implémentation d'ICorProfilerCallback::Initialize du profileur, une interface ICorProfilerInfo à chaque profileur de code lors de l'initialisation. Un profileur de code peut ensuite appeler des méthodes de l'interface ICorProfilerInfo 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