Partager via


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

ICorProfilerInfo::BeginInprocDebugging, méthode

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.

ICorProfilerInfo::EndInprocDebugging, méthode

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.

ICorProfilerInfo::ForceGC, méthode

Force le garbage collection dans le runtime.

ICorProfilerInfo::GetAppDomainInfo, méthode

Obtient des informations sur le domaine d'application spécifié.

ICorProfilerInfo::GetAssemblyInfo, méthode

Obtient des informations à propos de l'assembly spécifié.

ICorProfilerInfo::GetClassFromObject, méthode

Obtient le ClassID d'un

objet, compte tenu de son ObjectID.

ICorProfilerInfo::GetClassFromToken, méthode

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.

ICorProfilerInfo::GetClassIDInfo, méthode

Obtient le module parent et le jeton de métadonnées pour la classe spécifiée.

ICorProfilerInfo::GetCodeInfo, méthode

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.

ICorProfilerInfo::GetCurrentThreadID, méthode

Obtient l'ID du thread actuel, s'il s'agit d'un thread managé.

ICorProfilerInfo::GetEventMask, méthode

Obtient les catégories d'événement actuelles pour lesquelles le profileur souhaite recevoir des notifications d'événement du CLR.

ICorProfilerInfo::GetFunctionFromIP, méthode

Mappe un pointeur d'instructions de code managé à un FunctionID.

ICorProfilerInfo::GetFunctionFromToken, méthode

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.

ICorProfilerInfo::GetFunctionInfo, méthode

Obtient la classe parente et le jeton de métadonnées pour la fonction spécifiée.

ICorProfilerInfo::GetHandleFromThread, méthode

Mappe l'ID d'un thread à un handle de thread Win32.

ICorProfilerInfo::GetILFunctionBody, méthode

Obtient un pointeur vers le corps d'une méthode dans le code MSIL (Microsoft Intermediate Language), à partir de son en-tête.

ICorProfilerInfo::GetILFunctionBodyAllocator, méthode

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.

ICorProfilerInfo::GetILToNativeMapping, méthode

Obtient un mappage entre les offsets MSIL et les offsets natifs pour le code contenu dans la fonction spécifiée.

ICorProfilerInfo::GetInprocInspectionInterface, méthode

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.

ICorProfilerInfo::GetInprocInspectionIThisThread, méthode

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.

ICorProfilerInfo::GetModuleInfo, méthode

Obtient des informations à propos du module spécifié.

ICorProfilerInfo::GetModuleMetaData, méthode

Obtient une instance d'interface de métadonnées qui mappe au module spécifié.

ICorProfilerInfo::GetObjectSize, méthode

Obtient la taille d'un objet spécifié.

ICorProfilerInfo::GetThreadContext, méthode

Obtient l'identité de contexte actuellement associée au thread spécifié.

ICorProfilerInfo::GetThreadInfo, méthode

Obtient l'identité de thread Win32 actuelle pour le thread spécifié.

ICorProfilerInfo::GetTokenAndMetadataFromFunction, méthode

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.

ICorProfilerInfo::IsArrayClass, méthode

Détermine si la classe spécifiée est une classe de tableau.

ICorProfilerInfo::SetEnterLeaveFunctionHooks, méthode

Spécifie les fonctions implémentées par le profileur à appeler sur des raccordements « enter », « leave » et « tailcall » de fonctions managées.

ICorProfilerInfo::SetEventMask, méthode

Définit une valeur qui spécifie les types d'événements pour lesquels le profileur souhaite recevoir une notification du CLR.

ICorProfilerInfo::SetFunctionIDMapper, méthode

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.

ICorProfilerInfo::SetFunctionReJIT, méthode

Pas implémenté. Ne pas utiliser.

ICorProfilerInfo::SetILFunctionBody, méthode

Remplace le corps de la fonction spécifiée dans le module spécifié.

ICorProfilerInfo::SetILInstrumentedCodeMap, méthode

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

Voir aussi

Référence

ICorProfilerInfo2

Autres ressources

Interfaces de profilage