Compartilhar via


Interface ICorProfilerCallback

Fornece métodos que são usados pelo common linguagem tempo de execução (CLR) para notificar um criador de perfil de código quando ocorrem os eventos que o criador de perfil tem se inscreveu.

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

Descrição

Método ICorProfilerCallback::AppDomainCreationFinished

Notifica o criador de perfil de um domínio do aplicativo foi criado.

Método ICorProfilerCallback::AppDomainCreationStarted

Notifica o criador de perfil que está sendo criado um domínio do aplicativo.

Método ICorProfilerCallback::AppDomainShutdownFinished

Notifica o criador de perfil que um domínio do aplicativo foi descarregado de um processo.

Método ICorProfilerCallback::AppDomainShutdownStarted

Notifica o criador de perfil que um domínio do aplicativo está sendo descarregado de um processo.

Método ICorProfilerCallback::AssemblyLoadFinished

Notifica o criador de perfil que um assembly foi carregado.

Método ICorProfilerCallback::AssemblyLoadStarted

Notifica o criador de perfil que está sendo carregado um assembly.

Método ICorProfilerCallback::AssemblyUnloadFinished

Notifica o criador de perfil de um assembly foi descarregado.

Método ICorProfilerCallback::AssemblyUnloadStarted

Notifica o criador de perfil que está sendo descarregado um assembly.

Método ICorProfilerCallback::ClassLoadFinished

Notifica o criador de perfil que uma classe foi carregado.

Método ICorProfilerCallback::ClassLoadStarted

Notifica o criador de perfil que uma classe está sendo carregada.

Método ICorProfilerCallback::ClassUnloadFinished

Notifica o criador de perfil que uma classe terminou de descarregamento.

Método ICorProfilerCallback::ClassUnloadStarted

Notifica o criador de perfil que uma classe está sendo descarregada.

Método ICorProfilerCallback::COMClassicVTableCreated

Notifica o criador de perfil um tempo de execução callable wrapper (RCW) para a IID e classe especificado foi criado.

Método ICorProfilerCallback::COMClassicVTableDestroyed

Notifica o criador de perfil que está sendo destruído um RCW.

Método ICorProfilerCallback::ExceptionCatcherEnter

Notifica o criador de perfil que o controle está sendo passado para o apropriado catch bloco.

Método ICorProfilerCallback::ExceptionCatcherLeave

Notifica o criador de perfil que está sendo passado controle fora do apropriado catch bloco.

Método ICorProfilerCallback::ExceptionCLRCatcherExecute

obsoleto no .NET estrutura versão 2.0.

Método ICorProfilerCallback::ExceptionCLRCatcherFound

Obsoleta no .NET estrutura 2.0.

Método ICorProfilerCallback::ExceptionOSHandlerEnter

Não implementado. Um criador de perfil que precisa de informações de exceção não gerenciado deve obter essas informações por outros meios.

Método ICorProfilerCallback::ExceptionOSHandlerLeave

Não implementado. Um criador de perfil que precisa de informações de exceção não gerenciado deve obter essas informações por outros meios.

Método ICorProfilerCallback::ExceptionSearchCatcherFound

Notifica o criador de perfil que a fase de Pesquisar de manipulação de exceção foi localizado um manipulador para a exceção foi acionada.

Método ICorProfilerCallback::ExceptionSearchFilterEnter

Notifica o criador de perfil que está sendo executado um filtro de usuário.

Método ICorProfilerCallback::ExceptionSearchFilterLeave

Notifica o criador de perfil que um filtro de usuário apenas terminar a execução.

Método ICorProfilerCallback::ExceptionSearchFunctionEnter

Notifica o criador de perfil que a fase de Pesquisar de manipulação de exceção inseriu uma função.

Método ICorProfilerCallback::ExceptionSearchFunctionLeave

Notifica o criador de perfil que a fase de pesquisa de manipulação de exceção terminou de pesquisar uma função.

Método ICorProfilerCallback::ExceptionThrown

Notifica o criador de perfil uma exceção foi acionada.

Método ICorProfilerCallback::ExceptionUnwindFinallyEnter

Notifica o criador de perfil que a fase de desenrolamento de manipulação de exceção é inserindo um finally cláusula contida em função especificada.

Método ICorProfilerCallback::ExceptionUnwindFinallyLeave

Notifica o criador de perfil que a fase de desenrolamento de manipulação de exceção deixou um finally cláusula.

Método ICorProfilerCallback::ExceptionUnwindFunctionEnter

Notifica o criador de perfil que a fase de desenrolamento de manipulação de exceção inseriu uma função.

Método ICorProfilerCallback::ExceptionUnwindFunctionLeave

Notifica o criador de perfil que a fase de desenrolamento de manipulação de exceção foi finalizada desenrolar uma função.

Método ICorProfilerCallback::FunctionUnloadStarted

Notifica o criador de perfil que o tempo de execução foi iniciado descarregar uma função.

Método ICorProfilerCallback::inicializar

Chamado para inicializar o criador de perfil sempre que um novo aplicativo do CLR é iniciado.

Método ICorProfilerCallback::JITCachedFunctionSearchFinished

Notifica o criador de perfil que uma Pesquisar foi finalizada por uma função que foi compilada usando NGen.exe anteriormente.

Método ICorProfilerCallback::JITCachedFunctionSearchStarted

Notifica o criador de perfil que uma Pesquisar começou para uma função que foi compilada usando NGen.exe anteriormente.

Método ICorProfilerCallback::JITCompilationFinished

Notifica o criador de perfil que o compilador JIT concluiu a compilação de uma função.

Método ICorProfilerCallback::JITCompilationStarted

Notifica o criador de perfil que foi iniciado o compilador (JIT) just-in-time compilar uma função.

Método ICorProfilerCallback::JITFunctionPitched

Notifica o criador de perfil que uma função que foi compilado em JIT foi removida da memória.

Método ICorProfilerCallback::JITInlining

Notifica o criador de perfil que o compilador JIT é Sobre para inserir uma função de acordo com a outra função.

Método ICorProfilerCallback::ManagedToUnmanagedTransition

Notifica o criador de perfil que ocorreu uma transição de código gerenciado para código não gerenciado.

Método ICorProfilerCallback::ModuleAttachedToAssembly

Notifica o criador de perfil que está sendo anexado um módulo ao assembly seu pai.

Método ICorProfilerCallback::ModuleLoadFinished

Notifica o criador de perfil que um módulo foi carregado.

Método ICorProfilerCallback::ModuleLoadStarted

Notifica o criador de perfil que está sendo carregado um módulo.

Método ICorProfilerCallback::ModuleUnloadFinished

Notifica o criador de perfil que um módulo terminou de descarregamento.

Método ICorProfilerCallback::ModuleUnloadStarted

Notifica o criador de perfil que está sendo descarregado um módulo.

Método ICorProfilerCallback::MovedReferences

Notifica o criador de perfil sobre referências de objetos que foram movidos durante lixo coleção.

Método ICorProfilerCallback::ObjectAllocated

Notifica o criador de perfil memória dentro de pilha foi alocada para um objeto.

Método ICorProfilerCallback::ObjectReferences

Notifica o criador de perfil sobre objetos na memória referenciada pelo objeto especificado.

Método ICorProfilerCallback::ObjectsAllocatedByClass

Notifica o criador de perfil sobre o número de instâncias de cada classe especificada que foram criados desde o lixo anterior coleção.

Método ICorProfilerCallback::RemotingClientInvocationFinished

Notifica o criador de perfil que um comunicação remota telefonar tenha executado para conclusão no cliente.

Método ICorProfilerCallback::RemotingClientInvocationStarted

Notifica o criador de perfil que uma telefonar remota foi iniciado.

Método ICorProfilerCallback::RemotingClientReceivingReply

Notifica o criador de perfil que parte de uma telefonar de comunicação remota do servidor foi concluída e o cliente agora está recebendo e sobre como processar a resposta.

Método ICorProfilerCallback::RemotingClientSendingMessage

Notifica o criador de perfil que o cliente está enviando uma solicitação ao servidor.

Método ICorProfilerCallback::RemotingServerInvocationReturned

Notifica o criador de perfil que o processo terminar invocando um método em resposta a uma solicitação de invocação de método remoto.

Método ICorProfilerCallback::RemotingServerInvocationStarted

Notifica o criador de perfil que o processo é invocar um método em resposta a uma solicitação de invocação de método remoto.

Método ICorProfilerCallback::RemotingServerReceivingMessage

Notifica o criador de perfil que o processo está recebendo uma solicitação de chamada ou ativação de método remoto.

Método ICorProfilerCallback::RemotingServerSendingReply

Notifica o criador de perfil que o processo terminou de processar uma solicitação de invocação de método remoto e é Sobre para transmitir a resposta por meio de um canal.

Método ICorProfilerCallback::RootReferences

Notifica o criador de perfil com informações sobre referências raiz após a coleta de lixo.

Método ICorProfilerCallback::RuntimeResumeFinished

Notifica o criador de perfil que o tempo de execução reiniciou a todos os threads de runtime e retornou à operação normal.

Método ICorProfilerCallback::RuntimeResumeStarted

Notifica o criador de perfil que o time de execução está reiniciando todos os threads de time de execução.

Método ICorProfilerCallback::RuntimeSuspendAborted

Notifica o criador de perfil que o time de execução anulou a suspensão de time de execução estava ocorrendo.

Método ICorProfilerCallback::RuntimeSuspendFinished

Notifica o criador de perfil que o time de execução concluiu a suspensão de todos os threads de time de execução.

Método ICorProfilerCallback::RuntimeSuspendStarted

Notifica o criador de perfil é o time de execução Sobre suspender todos os threads de time de execução.

Método ICorProfilerCallback::RuntimeThreadResumed

Notifica o criador de perfil que o especificado thread reiniciou depois sendo suspenso.

Método ICorProfilerCallback::RuntimeThreadSuspended

Notifica o criador de perfil que o especificado thread foi ou está prestes a ser, suspenso.

Método ICorProfilerCallback::desligado

Notifica o criador de perfil que o aplicativo está sendo encerrado.

Método ICorProfilerCallback::ThreadAssignedToOSThread

Notifica o criador de perfil que um segmento gerenciado está sendo implementado usando um thread em determinado sistema operacional (SO).

Método ICorProfilerCallback::ThreadCreated

Notifica o criador de perfil que um thread foi criado.

Método ICorProfilerCallback::ThreadDestroyed

Notifica o criador de perfil que um segmento foi destruído.

Método ICorProfilerCallback::UnmanagedToManagedTransition

Notifica o criador de perfil que ocorreu uma transição de código não gerenciado para código gerenciado.

Comentários

O CLR chama um método no ICorProfilerCallback (ou ICorProfilerCallback2) interface para notificar o criador de perfil quando um evento, ao qual o criador de perfil foi inscrito, ocorre. Essa é a interface de retorno de chamada principal através do qual o CLR se comunica com o criador de perfil de código.

Um criador de perfil de código deve implementar os métodos do ICorProfilerCallback interface. Para o .NET estrutura versão 2.0 ou posterior, o criador de perfil também deve implementar o ICorProfilerCallback2 métodos. Cada implementação do método deve retornar um HRESULT que tem um valor de S_OK sucesso ou E_FAIL em caso de falha. Atualmente, o CLR ignora o HRESULT retornado por cada chamada de retorno, exceto ICorProfilerCallback::ObjectReferences.

No registro do Microsoft Windows, um criador de perfil de código deve registrar seu objeto COM (componente Object Model) que implementa o ICorProfilerCallback e ICorProfilerCallback2 interfaces. Os eventos para o qual deseja receber uma notificação chamando assina um criador de perfil de códigoICorProfilerInfo::SetEventMask. Normalmente, isso é concluído na implementação do criador de perfil de ICorProfilerCallback::inicializar. O criador de perfil, em seguida, é capaz de receber notificação de tempo de execução quando um evento está prestes a ocorrer ou ocorreu apenas em um processo em execução do tempo de execução.

ObservaçãoObservação:

O criador de perfil registra um único objeto COM. Se o criador de perfil for targetin o .NET estrutura versão 1 g 0,0 ou 1,1 , que objeto COM precisa implementar apenas os métodos de ICorProfilerCallback. Se ele é objetivo .NET estrutura versão 2.0 ou posterior, o objeto COM também deve implementar os métodos de ICorProfilerCallback2.

Requisitos

Plataformas: See Requisitos de sistema do .NET framework.

Cabeçalho: CorProf.idl

Biblioteca: CorGuids.lib

.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Consulte também

Referência

Interface ICorProfilerCallback2

Outros recursos

Interfaces de criação de perfil