Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 |
|---|---|
Inicializa la compatibilidad con la depuración en proceso. Este método ha quedado obsoleto en .NET Framework 2.0. |
|
Cierra una sesión de depuración en proceso. Este método ha quedado obsoleto en .NET Framework 2.0. |
|
Hace que se produzca la recolección de elementos no utilizados en el motor en tiempo de ejecución. |
|
Obtiene información acerca del dominio de aplicación especificado. |
|
Obtiene información acerca del ensamblado especificado. |
|
Obtiene el ClassID de un objeto dado su ObjectID. |
|
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. |
|
Obtiene el módulo primario y el símbolo (token) de metadatos de la clase especificada. |
|
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. |
|
Obtiene el identificador del subproceso actual, si es un subproceso administrado. |
|
Obtiene las categorías de evento actuales para las que el generador de perfiles desea recibir notificaciones de eventos de CLR. |
|
Asigna un puntero de instrucciones de código administrado a un FunctionID. |
|
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. |
|
Obtiene la clase primaria y el símbolo (token) de metadatos de la función especificada. |
|
Asigna el id. de un subproceso a un identificador de subproceso de Win32. |
|
Obtiene un puntero al cuerpo de un método en código de lenguaje intermedio de Microsoft (MSIL), comenzando por su encabezado. |
|
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. |
|
Obtiene una asignación de desplazamientos de MSIL a desplazamientos nativos para el código contenido en la función especificada. |
|
Obtiene un objeto en el que se puede consultar la interfaz ICorDebugProcess. Este método ha quedado obsoleto en .NET Framework 2.0. |
|
Obtiene un objeto en el que se puede consultar la interfaz ICorDebugThread. Este método ha quedado obsoleto en .NET Framework 2.0. |
|
Obtiene información sobre el módulo especificado. |
|
Obtiene una instancia de interfaz de metadatos que se asigna al módulo especificado. |
|
Obtiene el tamaño de un objeto especificado. |
|
Obtiene la identidad del contexto asociado actualmente al subproceso especificado. |
|
Obtiene la identidad del subproceso de Win32 actual para el subproceso especificado. |
|
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. |
|
Determina si la clase especificada es una clase de matriz. |
|
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. |
|
Establece un valor que especifica los tipos de eventos para los que el generador de perfiles desea recibir notificación de CLR. |
|
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. |
|
Sin implementar. No utilice esta etiqueta. |
|
Reemplaza el cuerpo de la función especificada en el módulo especificado. |
|
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