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 |
---|---|
Notifica o criador de perfil de um domínio do aplicativo foi criado. |
|
Notifica o criador de perfil que está sendo criado um domínio do aplicativo. |
|
Notifica o criador de perfil que um domínio do aplicativo foi descarregado de um processo. |
|
Notifica o criador de perfil que um domínio do aplicativo está sendo descarregado de um processo. |
|
Notifica o criador de perfil que um assembly foi carregado. |
|
Notifica o criador de perfil que está sendo carregado um assembly. |
|
Notifica o criador de perfil de um assembly foi descarregado. |
|
Notifica o criador de perfil que está sendo descarregado um assembly. |
|
Notifica o criador de perfil que uma classe foi carregado. |
|
Notifica o criador de perfil que uma classe está sendo carregada. |
|
Notifica o criador de perfil que uma classe terminou de descarregamento. |
|
Notifica o criador de perfil que uma classe está sendo descarregada. |
|
Notifica o criador de perfil um tempo de execução callable wrapper (RCW) para a IID e classe especificado foi criado. |
|
Notifica o criador de perfil que está sendo destruído um RCW. |
|
Notifica o criador de perfil que o controle está sendo passado para o apropriado catch bloco. |
|
Notifica o criador de perfil que está sendo passado controle fora do apropriado catch bloco. |
|
obsoleto no .NET estrutura versão 2.0. |
|
Obsoleta no .NET estrutura 2.0. |
|
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. |
|
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. |
|
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. |
|
Notifica o criador de perfil que está sendo executado um filtro de usuário. |
|
Notifica o criador de perfil que um filtro de usuário apenas terminar a execução. |
|
Notifica o criador de perfil que a fase de Pesquisar de manipulação de exceção inseriu uma função. |
|
Notifica o criador de perfil que a fase de pesquisa de manipulação de exceção terminou de pesquisar uma função. |
|
Notifica o criador de perfil uma exceção foi acionada. |
|
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. |
|
Notifica o criador de perfil que a fase de desenrolamento de manipulação de exceção deixou um finally cláusula. |
|
Notifica o criador de perfil que a fase de desenrolamento de manipulação de exceção inseriu uma função. |
|
Notifica o criador de perfil que a fase de desenrolamento de manipulação de exceção foi finalizada desenrolar uma função. |
|
Notifica o criador de perfil que o tempo de execução foi iniciado descarregar uma função. |
|
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. |
Notifica o criador de perfil que uma Pesquisar começou para uma função que foi compilada usando NGen.exe anteriormente. |
|
Notifica o criador de perfil que o compilador JIT concluiu a compilação de uma função. |
|
Notifica o criador de perfil que foi iniciado o compilador (JIT) just-in-time compilar uma função. |
|
Notifica o criador de perfil que uma função que foi compilado em JIT foi removida da memória. |
|
Notifica o criador de perfil que o compilador JIT é Sobre para inserir uma função de acordo com a outra função. |
|
Notifica o criador de perfil que ocorreu uma transição de código gerenciado para código não gerenciado. |
|
Notifica o criador de perfil que está sendo anexado um módulo ao assembly seu pai. |
|
Notifica o criador de perfil que um módulo foi carregado. |
|
Notifica o criador de perfil que está sendo carregado um módulo. |
|
Notifica o criador de perfil que um módulo terminou de descarregamento. |
|
Notifica o criador de perfil que está sendo descarregado um módulo. |
|
Notifica o criador de perfil sobre referências de objetos que foram movidos durante lixo coleção. |
|
Notifica o criador de perfil memória dentro de pilha foi alocada para um objeto. |
|
Notifica o criador de perfil sobre objetos na memória referenciada pelo objeto especificado. |
|
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. |
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. |
|
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. |
Notifica o criador de perfil que o processo está recebendo uma solicitação de chamada ou ativação de método remoto. |
|
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. |
|
Notifica o criador de perfil com informações sobre referências raiz após a coleta de lixo. |
|
Notifica o criador de perfil que o tempo de execução reiniciou a todos os threads de runtime e retornou à operação normal. |
|
Notifica o criador de perfil que o time de execução está reiniciando todos os threads de time de execução. |
|
Notifica o criador de perfil que o time de execução anulou a suspensão de time de execução estava ocorrendo. |
|
Notifica o criador de perfil que o time de execução concluiu a suspensão de todos os threads de time de execução. |
|
Notifica o criador de perfil é o time de execução Sobre suspender todos os threads de time de execução. |
|
Notifica o criador de perfil que o especificado thread reiniciou depois sendo suspenso. |
|
Notifica o criador de perfil que o especificado thread foi ou está prestes a ser, suspenso. |
|
Notifica o criador de perfil que o aplicativo está sendo encerrado. |
|
Notifica o criador de perfil que um segmento gerenciado está sendo implementado usando um thread em determinado sistema operacional (SO). |
|
Notifica o criador de perfil que um thread foi criado. |
|
Notifica o criador de perfil que um segmento foi destruído. |
|
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.
![]() |
---|
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