Compartir a través de


ICorProfilerInfo

Actualización: noviembre 2007

Proporciona métodos que pueden utilizar los analizadores de código para comunicarse con Common Language Runtime (CLR) para controlar la supervisión de eventos y solicitar información.

Nota

Cada método de la interfaz ICorProfilerInfo devuelve un valor HRESULT para indicar que el resultado es correcto o incorrecto. Vea en CorError.h la lista de posibles códigos devueltos.

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étodos

Método

Descripción

ICorProfilerInfo::BeginInprocDebugging (Método)

Inicializa la compatibilidad con la depuración en proceso. Este método ha quedado obsoleto en .NET Framework 2.0.

ICorProfilerInfo::EndInprocDebugging (Método)

Cierra una sesión de depuración en proceso. Este método ha quedado obsoleto en .NET Framework 2.0.

ICorProfilerInfo::ForceGC (Método)

Hace que se produzca la recolección de elementos no utilizados en el motor en tiempo de ejecución.

ICorProfilerInfo::GetAppDomainInfo (Método)

Obtiene información acerca del dominio de aplicación especificado.

ICorProfilerInfo::GetAssemblyInfo (Método)

Obtiene información acerca del ensamblado especificado.

ICorProfilerInfo::GetClassFromObject (Método)

Obtiene el ClassID de un objeto

dado su ObjectID.

ICorProfilerInfo::GetClassFromToken (Método)

Obtiene el identificador de la clase, dado el símbolo (token) de metadatos. Este método ha quedado obsoleto en .NET Framework 2.0. Utilice en su lugar el método ICorProfilerInfo2::GetClassFromTokenAndTypeArgs.

ICorProfilerInfo::GetClassIDInfo (Método)

Obtiene el módulo primario y el símbolo (token) de metadatos de la clase especificada.

ICorProfilerInfo::GetCodeInfo (Método)

Obtiene la cantidad de código nativo asociado al identificador de función especificado. Este método está obsoleto. Utilice en su lugar el método ICorProfilerInfo2::GetCodeInfo2.

ICorProfilerInfo::GetCurrentThreadID (Método)

Obtiene el identificador del subproceso actual, si es un subproceso administrado.

ICorProfilerInfo::GetEventMask (Método)

Obtiene las categorías de evento actuales para las que el generador de perfiles desea recibir notificaciones de eventos de CLR.

ICorProfilerInfo::GetFunctionFromIP (Método)

Asigna un puntero de instrucciones de código administrado a un FunctionID.

ICorProfilerInfo::GetFunctionFromToken (Método)

Obtiene el identificador de una función. Este método ha quedado obsoleto en .NET Framework 2.0. Utilice en su lugar el método ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs.

ICorProfilerInfo::GetFunctionInfo (Método)

Obtiene la clase primaria y el símbolo (token) de metadatos de la función especificada.

ICorProfilerInfo::GetHandleFromThread (Método)

Asigna el id. de un subproceso a un identificador de subproceso de Win32.

ICorProfilerInfo::GetILFunctionBody (Método)

Obtiene un puntero al cuerpo de un método en código de lenguaje intermedio de Microsoft (MSIL), comenzando por su encabezado.

ICorProfilerInfo::GetILFunctionBodyAllocator (Método)

Obtiene una interfaz que proporciona un método para asignar la memoria que se va a utilizar para intercambiar el cuerpo de un método en código de MSIL.

ICorProfilerInfo::GetILToNativeMapping (Método)

Obtiene una asignación de desplazamientos de MSIL a desplazamientos nativos para el código contenido en la función especificada.

ICorProfilerInfo::GetInprocInspectionInterface (Método)

Obtiene un objeto en el que se puede consultar la interfaz ICorDebugProcess. Este método ha quedado obsoleto en .NET Framework 2.0.

ICorProfilerInfo::GetInprocInspectionIThisThread (Método)

Obtiene un objeto en el que se puede consultar la interfaz ICorDebugThread. Este método ha quedado obsoleto en .NET Framework 2.0.

ICorProfilerInfo::GetModuleInfo (Método)

Obtiene información sobre el módulo especificado.

ICorProfilerInfo::GetModuleMetaData (Método)

Obtiene una instancia de interfaz de metadatos que se asigna al módulo especificado.

ICorProfilerInfo::GetObjectSize (Método)

Obtiene el tamaño de un objeto especificado.

ICorProfilerInfo::GetThreadContext (Método)

Obtiene la identidad del contexto asociado actualmente al subproceso especificado.

ICorProfilerInfo::GetThreadInfo (Método)

Obtiene la identidad del subproceso de Win32 actual para el subproceso especificado.

ICorProfilerInfo::GetTokenAndMetadataFromFunction (Método)

Obtiene el token de metadatos y una instancia de la interfaz de metadatos que se pueden utilizar frente al token de la función especificada.

ICorProfilerInfo::IsArrayClass (Método)

Determina si la clase especificada es una clase de matriz.

ICorProfilerInfo::SetEnterLeaveFunctionHooks (Método)

Especifica las funciones implementadas por el generador de perfiles a las que se va a llamar en los enlaces "enter", "leave" y "tailcall" de las funciones administradas.

ICorProfilerInfo::SetEventMask (Método)

Establece un valor que especifica los tipos de eventos para los que el generador de perfiles desea recibir notificación de CLR.

ICorProfilerInfo::SetFunctionIDMapper (Método)

Especifica la función implementada en el generador de perfiles a la que se llamará para asignar valores FunctionID a valores alternativos, que se pasan a los enlaces de entrada y salida de función del generador de perfiles.

ICorProfilerInfo::SetFunctionReJIT (Método)

Sin implementar. No utilice esta etiqueta.

ICorProfilerInfo::SetILFunctionBody (Método)

Reemplaza el cuerpo de la función especificada en el módulo especificado.

ICorProfilerInfo::SetILInstrumentedCodeMap (Método)

Especifica cómo se asignan los desplazamientos del código de MSIL original de una función especificada a los nuevos desplazamientos del código de MSIL modificado por el generador de perfiles de la función.

Comentarios

Un generador de perfiles llama a un método en la interfaz ICorProfilerInfo para comunicarse con CLR con el fin de controlar la supervisión de eventos y solicitar información.

CLR implementa los métodos de la interfaz ICorProfilerInfo utilizando el modelo de subprocesamiento libre. Cada método devuelve un valor HRESULT para indicar si la ejecución se ha realizado correctamente o si se han producido errores. Vea en CorError.h la lista de posibles códigos devueltos.

CLR pasa una interfaz ICorProfilerInfo a cada generador de perfiles del código durante la inicialización, a través de la implementación de ICorProfilerCallback::Initialize. A continuación, un analizador de código puede llamar a los métodos de la interfaz ICorProfilerInfo para obtener información sobre el código administrado que se está ejecutando bajo el control de CLR.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: CorProf.idl

Biblioteca: CorGuids.lib

Versiones de .NET Framework: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

ICorProfilerInfo2

Otros recursos

Interfaces para generación de perfiles