Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Observaçã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
Observação: