Compartir a través de


ICorProfilerCallback

Actualización: noviembre 2007

Proporciona métodos que Common Language Runtime (CLR) utiliza para notificar a un generador de perfiles del código cuándo se producen los eventos a los que está suscrito.

interface ICorProfilerCallback : IUnknown
{ 
    HRESULT Initialize(
        [in] IUnknown     *pICorProfilerInfoUnk);

    HRESULT Shutdown();

    HRESULT AppDomainCreationStarted(
        [in] AppDomainID appDomainId);

    HRESULT AppDomainCreationFinished(
        [in] AppDomainID appDomainId,
        [in] HRESULT     hrStatus);

    HRESULT AppDomainShutdownStarted(
        [in] AppDomainID appDomainId);

    HRESULT AppDomainShutdownFinished(
        [in] AppDomainID appDomainId,
        [in] HRESULT     hrStatus);

    HRESULT AssemblyLoadStarted(
        [in] AssemblyID assemblyId);

    HRESULT AssemblyLoadFinished(
        [in] AssemblyID assemblyId,
        [in] HRESULT    hrStatus);

    HRESULT AssemblyUnloadStarted(
        [in] AssemblyID assemblyId);

    HRESULT AssemblyUnloadFinished(
        [in] AssemblyID assemblyId,
        [in] HRESULT    hrStatus);
    HRESULT ModuleLoadStarted(
        [in] ModuleID moduleId);

    HRESULT ModuleLoadFinished(
        [in] ModuleID moduleId,
        [in] HRESULT  hrStatus);

    HRESULT ModuleUnloadStarted(
        [in] ModuleID moduleId);

    HRESULT ModuleUnloadFinished(
        [in] ModuleID moduleId,
        [in] HRESULT  hrStatus);
    
    HRESULT ModuleAttachedToAssembly(
        [in] ModuleID   moduleId,
        [in] AssemblyID AssemblyId);

    HRESULT ClassLoadStarted(
        [in] ClassID classId);

    HRESULT ClassLoadFinished(
        [in] ClassID classId,
        [in] HRESULT hrStatus);
      
    HRESULT ClassUnloadStarted(
        [in] ClassID classId);

    HRESULT ClassUnloadFinished(
        [in] ClassID classId,
        [in] HRESULT hrStatus);
    
    HRESULT FunctionUnloadStarted(
        [in] FunctionID functionId);

    HRESULT JITCompilationStarted(
        [in] FunctionID functionId,
        [in] BOOL       fIsSafeToBlock);
    
    HRESULT JITCompilationFinished(
        [in] FunctionID functionId,
        [in] HRESULT    hrStatus,
        [in] BOOL       fIsSafeToBlock);

    HRESULT JITCachedFunctionSearchStarted(
        [in] FunctionID functionId,
        [out] BOOL      *pbUseCachedFunction);
    
    HRESULT JITCachedFunctionSearchFinished(
        [in] FunctionID        functionId,
        [in] COR_PRF_JIT_CACHE result);

    HRESULT JITFunctionPitched(
        [in] FunctionID functionId);
    
    HRESULT JITInlining(
        [in] FunctionID callerId,
        [in] FunctionID calleeId,
        [out] BOOL      *pfShouldInline);

    HRESULT ThreadDestroyed(
        [in] ThreadID threadId);

    HRESULT ThreadAssignedToOSThread(
        [in] ThreadID managedThreadId,
        [in] DWORD    osThreadId);
      
    HRESULT RemotingClientInvocationStarted();

    HRESULT RemotingClientSendingMessage(
        [in] GUID *pCookie,
        [in] BOOL fIsAsync);

    HRESULT RemotingClientReceivingReply(
        [in] GUID *pCookie,
        [in] BOOL fIsAsync);
  
    HRESULT RemotingClientInvocationFinished();
      
    HRESULT RemotingServerReceivingMessage(
        [in] GUID *pCookie,
        [in] BOOL fIsAsync);
      
    HRESULT RemotingServerInvocationStarted();
      
    HRESULT RemotingServerInvocationReturned();
    
    HRESULT RemotingServerSendingReply(
        [in] GUID *pCookie,
        [in] BOOL fIsAsync);
      
    HRESULT UnmanagedToManagedTransition(
        [in] FunctionID                functionId,
        [in] COR_PRF_TRANSITION_REASON reason);

    HRESULT ManagedToUnmanagedTransition(
        [in] FunctionID                functionId,
        [in] COR_PRF_TRANSITION_REASON reason);

    HRESULT RuntimeSuspendStarted(
        [in] COR_PRF_SUSPEND_REASON suspendReason);
  
    HRESULT RuntimeSuspendFinished();

    HRESULT RuntimeSuspendAborted();

    HRESULT RuntimeResumeStarted();

    HRESULT RuntimeResumeFinished();

    HRESULT RuntimeThreadSuspended(
        [in] ThreadID threadId);

    HRESULT RuntimeThreadResumed(
        [in] ThreadID threadId);
      
    HRESULT MovedReferences(
        [in]                                ULONG    cMovedObjectIDRanges,
        [in, size_is(cMovedObjectIDRanges)] ObjectID oldObjectIDRangeStart[] ,
        [in, size_is(cMovedObjectIDRanges)] ObjectID newObjectIDRangeStart[] ,
        [in, size_is(cMovedObjectIDRanges)] ULONG    cObjectIDRangeLength[] );
      
    HRESULT ObjectAllocated(
        [in] ObjectID objectId,
        [in] ClassID classId);

    HRESULT ObjectsAllocatedByClass(
        [in]                       ULONG   cClassCount,
        [in, size_is(cClassCount)] ClassID classIds[] ,
        [in, size_is(cClassCount)] ULONG   cObjects[] );
    
    HRESULT ObjectReferences(
        [in]                       ObjectID objectId,
        [in]                       ClassID  classId,
        [in]                       ULONG    cObjectRefs,
        [in, size_is(cObjectRefs)] ObjectID objectRefIds[] );

    HRESULT RootReferences(
        [in]                     ULONG    cRootRefs,
        [in, size_is(cRootRefs)] ObjectID rootRefIds[] );

    HRESULT ExceptionThrown(
        [in] ObjectID thrownObjectId);

    HRESULT ExceptionSearchFunctionEnter(
        [in] FunctionID functionId);

    HRESULT ExceptionSearchFunctionLeave();

    HRESULT ExceptionSearchFilterEnter(
        [in] FunctionID functionId);

    HRESULT ExceptionSearchFilterLeave();

    HRESULT ExceptionSearchCatcherFound(
        [in] FunctionID functionId);

    HRESULT ExceptionOSHandlerEnter(
        [in] UINT_PTR __unused);

    HRESULT ExceptionOSHandlerLeave(
        [in] UINT_PTR __unused);

    HRESULT ExceptionUnwindFunctionEnter(
        [in] FunctionID functionId);
  
    HRESULT ExceptionUnwindFunctionLeave();

    HRESULT ExceptionUnwindFinallyEnter(
        [in] FunctionID functionId);

    HRESULT ExceptionUnwindFinallyLeave();

    HRESULT ExceptionCatcherEnter(
        [in] FunctionID functionId,
        [in] ObjectID   objectId);
      
    HRESULT ExceptionCatcherLeave();
        
    HRESULT COMClassicVTableCreated(
        [in] ClassID wrappedClassId,
        [in] REFGUID implementedIID,
        [in] void    *pVTable,
        [in] ULONG   cSlots);
      
    HRESULT COMClassicVTableDestroyed(
        [in] ClassID wrappedClassId,
        [in] REFGUID implementedIID,
        [in] void    *pVTable);

    HRESULT ExceptionCLRCatcherFound();

    HRESULT ExceptionCLRCatcherExecute();
}

Métodos

Método

Descripción

ICorProfilerCallback::AppDomainCreationFinished (Método)

Notifica al generador de perfiles que se ha creado un dominio de aplicación.

ICorProfilerCallback::AppDomainCreationStarted (Método)

Notifica al generador de perfiles que se va a crear un dominio de aplicación.

ICorProfilerCallback::AppDomainShutdownFinished (Método)

Notifica al generador de perfiles que se ha descargado un dominio de aplicación desde un proceso.

ICorProfilerCallback::AppDomainShutdownStarted (Método)

Notifica al generador de perfiles que se va a descargar un dominio de aplicación desde un proceso.

ICorProfilerCallback::AssemblyLoadFinished (Método)

Notifica al generador de perfiles que un ensamblado ha terminado de cargarse.

ICorProfilerCallback::AssemblyLoadStarted (Método)

Notifica al generador de perfiles que se va a cargar un ensamblado.

ICorProfilerCallback::AssemblyUnloadFinished (Método)

Notifica al generador de perfiles que se ha descargado un ensamblado.

ICorProfilerCallback::AssemblyUnloadStarted (Método)

Notifica al generador de perfiles que se va a descargar un ensamblado.

ICorProfilerCallback::ClassLoadFinished (Método)

Notifica al generador de perfiles que una clase ha terminado de cargarse.

ICorProfilerCallback::ClassLoadStarted (Método)

Notifica al generador de perfiles que se va a cargar una clase.

ICorProfilerCallback::ClassUnloadFinished (Método)

Notifica al generador de perfiles que una clase ha terminado de descargarse.

ICorProfilerCallback::ClassUnloadStarted (Método)

Notifica al generador de perfiles que se va a descargar una clase.

ICorProfilerCallback::COMClassicVTableCreated (Método)

Notifica al generador de perfiles que se ha creado un contenedor invocable en tiempo de ejecución (RCW) para el IID y la clase especificados.

ICorProfilerCallback::COMClassicVTableDestroyed (Método)

Notifica al generador de perfiles que se va a destruir un RCW.

ICorProfilerCallback::ExceptionCatcherEnter (Método)

Notifica al generador de perfiles que el control se va a pasar al bloque catch correspondiente.

ICorProfilerCallback::ExceptionCatcherLeave (Método)

Notifica al generador de perfiles que el control se va a pasar desde el bloque catch correspondiente.

ICorProfilerCallback::ExceptionCLRCatcherExecute (Método)

Ha quedado obsoleto en .NET Framework 2.0.

ICorProfilerCallback::ExceptionCLRCatcherFound (Método)

Ha quedado obsoleto en .NET Framework 2.0.

ICorProfilerCallback::ExceptionOSHandlerEnter (Método)

Sin implementar. Un generador de perfiles que necesita información de excepciones no administradas debe obtener esta información a través de otros medios.

ICorProfilerCallback::ExceptionOSHandlerLeave (Método)

Sin implementar. Un generador de perfiles que necesita información de excepciones no administradas debe obtener esta información a través de otros medios.

ICorProfilerCallback::ExceptionSearchCatcherFound (Método)

Notifica al generador de perfiles que la fase de búsqueda del control de excepciones ha localizado un controlador para la excepción que se inició.

ICorProfilerCallback::ExceptionSearchFilterEnter (Método)

Notifica al generador de perfiles que se va a ejecutar un filtro de usuario.

ICorProfilerCallback::ExceptionSearchFilterLeave (Método)

Notifica al generador de perfiles que acaba de terminar de ejecutarse un filtro de usuario.

ICorProfilerCallback::ExceptionSearchFunctionEnter (Método)

Notifica al analizador de código que la fase de búsqueda del control de excepciones ha entrado en una función.

ICorProfilerCallback::ExceptionSearchFunctionLeave (Método)

Notifica al generador de perfiles que la fase de búsqueda del control de excepciones ha terminado de buscar una función.

ICorProfilerCallback::ExceptionThrown (Método)

Notifica al generador de perfiles que se ha iniciado una excepción.

ICorProfilerCallback::ExceptionUnwindFinallyEnter (Método)

Notifica al generador de perfiles que la fase de desenredo del control de excepciones está entrando en una cláusula finally incluida en la función especificada.

ICorProfilerCallback::ExceptionUnwindFinallyLeave (Método)

Notifica al generador de perfiles que la fase de desenredo del control de excepciones ha dejado una cláusula finally.

ICorProfilerCallback::ExceptionUnwindFunctionEnter (Método)

Notifica al generador de perfiles que la fase de desenredo del control de excepciones ha entrado en una función.

ICorProfilerCallback::ExceptionUnwindFunctionLeave (Método)

Notifica al generador de perfiles que la fase de desenredo del control de excepciones ha terminado de desenredar una función.

ICorProfilerCallback::FunctionUnloadStarted (Método)

Notifica al generador de perfiles que el motor en tiempo de ejecución ha empezado a descargar una función.

ICorProfilerCallback::Initialize (Método)

Se llama para inicializar el generador de perfiles siempre que se inicia una nueva aplicación de CLR.

ICorProfilerCallback::JITCachedFunctionSearchFinished (Método)

Notifica al generador de perfiles que ha terminado la búsqueda de una función previamente compilada mediante NGen.exe.

ICorProfilerCallback::JITCachedFunctionSearchStarted (Método)

Notifica al generador de perfiles que se ha iniciado la búsqueda de una función previamente compilada mediante NGen.exe.

ICorProfilerCallback::JITCompilationFinished (Método)

Notifica al generador de perfiles que el compilador JIT ha terminado de compilar una función.

ICorProfilerCallback::JITCompilationStarted (Método)

Notifica al generador de perfiles que el compilador Just-In-Time (JIT) ha comenzado a compilar una función.

ICorProfilerCallback::JITFunctionPitched (Método)

Notifica al generador de perfiles que se ha quitado de la memoria una función compilada JIT.

ICorProfilerCallback::JITInlining (Método)

Notifica al generador de perfiles que el compilador JIT está a punto de insertar una función en línea con otra función.

ICorProfilerCallback::ManagedToUnmanagedTransition (Método)

Notifica al generador de perfiles que se ha producido una transición de código administrado a código no administrado.

ICorProfilerCallback::ModuleAttachedToAssembly (Método)

Notifica al generador de perfiles que se va a asociar un módulo a su ensamblado primario.

ICorProfilerCallback::ModuleLoadFinished (Método)

Notifica al generador de perfiles que un módulo ha terminado de cargarse.

ICorProfilerCallback::ModuleLoadStarted (Método)

Notifica al generador de perfiles que se va a cargar un módulo.

ICorProfilerCallback::ModuleUnloadFinished (Método)

Notifica al generador de perfiles que un módulo ha terminado de descargarse.

ICorProfilerCallback::ModuleUnloadStarted (Método)

Notifica al generador de perfiles que se va a descargar un módulo.

ICorProfilerCallback::MovedReferences (Método)

Notifica al generador de perfiles las referencias a objeto que se desplazaron durante la recolección de elementos no utilizados.

ICorProfilerCallback::ObjectAllocated (Método)

Notifica al generador de perfiles que se ha asignado la memoria del montón para un objeto.

ICorProfilerCallback::ObjectReferences (Método)

Notifica al generador de perfiles los objetos en memoria a los que hace referencia el objeto especificado.

ICorProfilerCallback::ObjectsAllocatedByClass (Método)

Notifica al generador de perfiles el número de instancias de cada clase especificada que se han creado desde la recolección de elementos no utilizados anterior.

ICorProfilerCallback::RemotingClientInvocationFinished (Método)

Notifica al generador de perfiles que ha finalizado la ejecución de una llamada remota en el cliente.

ICorProfilerCallback::RemotingClientInvocationStarted (Método)

Notifica al generador de perfiles que se ha iniciado una llamada remota.

ICorProfilerCallback::RemotingClientReceivingReply (Método)

Notifica al generador de perfiles que la parte del servidor de una llamada remota ha finalizado y que el cliente ahora está recibiendo y a punto de procesar la respuesta.

ICorProfilerCallback::RemotingClientSendingMessage (Método)

Notifica al generador de perfiles que el cliente va a enviar una solicitud al servidor.

ICorProfilerCallback::RemotingServerInvocationReturned (Método)

Notifica al generador de perfiles que el proceso ha finalizado la invocación de un método en respuesta a una solicitud de invocación de método remota.

ICorProfilerCallback::RemotingServerInvocationStarted (Método)

Notifica al generador de perfiles que el proceso va a invocar un método en respuesta a una solicitud de invocación de método remota.

ICorProfilerCallback::RemotingServerReceivingMessage (Método)

Notifica al generador de perfiles que el proceso está recibiendo una invocación de método o una solicitud de activación de manera remota.

ICorProfilerCallback::RemotingServerSendingReply (Método)

Notifica al generador de perfiles que el proceso ha finalizado el procesamiento de una solicitud de invocación de método remota y está a punto de transmitir la respuesta a través de un canal.

ICorProfilerCallback::RootReferences (Método)

Notifica al generador de perfiles acerca de las referencias raíz después de la recolección de elementos no utilizados.

ICorProfilerCallback::RuntimeResumeFinished (Método)

Notifica al generador de perfiles que el motor en tiempo de ejecución ha reanudado todos los subprocesos y ha vuelto a un funcionamiento normal.

ICorProfilerCallback::RuntimeResumeStarted (Método)

Notifica al generador de perfiles que el motor en tiempo de ejecución va a reanudar todos los subprocesos en tiempo de ejecución.

ICorProfilerCallback::RuntimeSuspendAborted (Método)

Notifica al generador de perfiles que el motor en tiempo de ejecución ha anulado la suspensión en tiempo de ejecución que se estaba produciendo.

ICorProfilerCallback::RuntimeSuspendFinished (Método)

Notifica al generador de perfiles que el motor en tiempo de ejecución ha finalizado la suspensión de todos los subprocesos en tiempo de ejecución.

ICorProfilerCallback::RuntimeSuspendStarted (Método)

Notifica al generador de perfiles que el motor en tiempo de ejecución está a punto de suspender todos los subprocesos en tiempo de ejecución.

ICorProfilerCallback::RuntimeThreadResumed (Método)

Notifica al generador de perfiles que el subproceso especificado se ha reanudado después de estar suspendido.

ICorProfilerCallback::RuntimeThreadSuspended (Método)

Notifica al generador de perfiles que el subproceso especificado ha sido suspendido o está a punto de serlo.

ICorProfilerCallback::Shutdown (Método)

Notifica al generador de perfiles que la aplicación va a cerrarse.

ICorProfilerCallback::ThreadAssignedToOSThread (Método)

Notifica al generador de perfiles que se va a implementar un subproceso administrado mediante un subproceso concreto del sistema operativo (OS).

ICorProfilerCallback::ThreadCreated (Método)

Notifica al generador de perfiles que se ha creado un subproceso.

ICorProfilerCallback::ThreadDestroyed (Método)

Notifica al generador de perfiles que se ha destruido un subproceso.

ICorProfilerCallback::UnmanagedToManagedTransition (Método)

Notifica al generador de perfiles que se ha producido una transición de código no administrado a código administrado.

Comentarios

CLR llama a un método de la interfaz ICorProfilerCallback (o ICorProfilerCallback2) para notificar al generador de perfiles cuándo se produce un evento al que se ha suscrito. Esta es la interfaz de devolución de llamada principal a través de la que se comunica CLR con el analizador de código.

Un analizador de código debe implementar los métodos de la interfaz ICorProfilerCallback. En .NET Framework 2.0 o versiones posteriores, el generador de perfiles también debe implementar los métodos de ICorProfilerCallback2. Cada implementación de método debe devolver un valor HRESULT que sea S_OK si todo es correcto o E_FAIL en caso de error. Actualmente, CLR omite el valor HRESULT devuelto por cada devolución de llamada, excepto ICorProfilerCallback::ObjectReferences.

En el Registro de Microsoft Windows, un generador de perfiles del código debe registrar el objeto del Modelo de objetos componentes (COM) que implementa las interfaces ICorProfilerCallback e ICorProfilerCallback2. Un generador de perfiles del código se suscribe a los eventos de los que desea recibir notificación mediante una llamada a ICorProfilerInfo::SetEventMask. Esto normalmente tiene lugar en la implementación de ICorProfilerCallback::Initialize del generador de perfiles. Después, el generador de perfiles podrá recibir una notificación del motor en tiempo de ejecución cuando esté a punto de producirse un evento o cuando éste acabe de producirse en un proceso del motor en tiempo de ejecución que se esté ejecutando.

Nota

El generador de perfiles registra un solo objeto COM. Si el generador de perfiles tiene como destino la versión 1.0 o 1.1 de .NET Framework, el objeto COM sólo necesita implementar los métodos de ICorProfilerCallback. Si tiene como destino .NET Framework 2.0 o versiones posteriores, el objeto COM debe implementar también los métodos de ICorProfilerCallback2.

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, 1.1, 1.0

Vea también

Referencia

ICorProfilerCallback2

Otros recursos

Interfaces para generación de perfiles