Compartilhar via


Interface ICorProfilerInfo

Fornece métodos para uso por criadores de perfis de código para se comunicar com o common linguagem tempo de execução (CLR) para controlar evento monitoramento e solicitação de informações.

ObservaçãoObservação:

Cada método na ICorProfilerInfo interface retorna um HRESULT para indicar êxito ou falha. Consulte CorError.h para uma lista de possíveis códigos de retorno.

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

Descrição

Método ICorProfilerInfo::BeginInprocDebugging

Inicializa em processo suporte à depuração. Esse método está obsoleto no .NET estrutura versão 2.0.

Método ICorProfilerInfo::EndInprocDebugging

Desliga no-processo sessão de depuração. Esse método está obsoleto no .NET estrutura versão 2.0.

Método ICorProfilerInfo::ForceGC

Força a coleta de lixo em tempo de execução.

Método ICorProfilerInfo::GetAppDomainInfo

Obtém informações sobre o domínio do aplicativo especificado.

Método ICorProfilerInfo::GetAssemblyInfo

Obtém informações sobre o assembly especificado.

Método ICorProfilerInfo::GetClassFromObject

Obtém o ClassID de um

objeto, dado sua ObjectID.

Método ICorProfilerInfo::GetClassFromToken

Obtém o ID da classe, dado o token de metadados. Esse método está obsoleto no .NET estrutura versão 2.0. Use o ICorProfilerInfo2::GetClassFromTokenAndTypeArgs método em vez disso.

Método ICorProfilerInfo::GetClassIDInfo

Obtém o pai módulo e o token de metadados para a classe especificada.

Método ICorProfilerInfo::GetCodeInfo

Obtém a extensão de código nativo associado com a ID da função especificada. Esse método está obsoleto. Use o ICorProfilerInfo2::GetCodeInfo2 método em vez disso.

Método ICorProfilerInfo::GetCurrentThreadID

Obtém o ID do corrente thread, se for um gerenciado thread.

Método ICorProfilerInfo::GetEventMask

Obtém as categorias de eventos corrente para o qual o criador de perfil deseja receber notificações de eventos do CLR.

Método ICorProfilerInfo::GetFunctionFromIP

Mapeia um ponteiro de instrução do código gerenciado para um FunctionID.

Método ICorProfilerInfo::GetFunctionFromToken

Obtém a ID de uma função. Esse método está obsoleto no .NET estrutura versão 2.0. Use o ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs método em vez disso.

Método ICorProfilerInfo::GetFunctionInfo

Obtém a classe pai e metadados token para a função especificada.

Método ICorProfilerInfo::GetHandleFromThread

Mapeie a ID de um thread para uma alça de thread do Win32.

Método ICorProfilerInfo::GetILFunctionBody

Obtém um ponteiro para o corpo de um método no código Microsoft intermediate linguagem (MSIL), começando em seu cabeçalho.

Método ICorProfilerInfo::GetILFunctionBodyAllocator

Obtém uma interface que fornece um método para alocar memória para ser usado para trocar o corpo de um método no código MSIL.

Método ICorProfilerInfo::GetILToNativeMapping

Obtém um MAP de deslocamentos MSIL para deslocamentos nativo para o código contido na função especificada.

Método ICorProfilerInfo::GetInprocInspectionInterface

Obtém um objeto que pode ser consultado para um ICorDebugProcess interface. Esse método está obsoleto no .NET estrutura versão 2.0.

Método ICorProfilerInfo::GetInprocInspectionIThisThread

Obtém um objeto que pode ser consultado para o ICorDebugThread interface. Esse método está obsoleto no .NET estrutura versão 2.0.

Método ICorProfilerInfo::GetModuleInfo

Obtém informações sobre o módulo especificado.

Método ICorProfilerInfo::GetModuleMetaData

Obtém uma instância da interface de metadados que mapeia para o módulo especificado.

Método ICorProfilerInfo::GetObjectSize

Obtém o dimensionar de um objeto especificado.

Método ICorProfilerInfo::GetThreadContext

Obtém a identidade de contexto associada no momento especificado thread.

Método ICorProfilerInfo::GetThreadInfo

Obtém a identidade corrente do thread do Win32 para o segmento especificado.

Método ICorProfilerInfo::GetTokenAndMetadataFromFunction

Obtém o token de metadados e uma instância da interface de metadados que pode ser usada contra o token para a função especificada.

Método ICorProfilerInfo::IsArrayClass

Determina se a classe especificada é uma classe de matriz.

Método ICorProfilerInfo::SetEnterLeaveFunctionHooks

Especifica funções implementado criador de perfil a ser chamado em "entrar", "não" e "tailcall" ganchos de funções gerenciadas.

Método ICorProfilerInfo::SetEventMask

Define um valor que especifica os tipos de eventos para o qual o criador de perfil deseja receber notificação do CLR.

Método ICorProfilerInfo::SetFunctionIDMapper

Especifica a função implementado criador de perfil que será chamada para mapear FunctionID valores a Alternativa valores, que são passados para ganchos de entrada/sair de função o criador de perfil.

Método ICorProfilerInfo::SetFunctionReJIT

Não implementado. Não use.

Método ICorProfilerInfo::SetILFunctionBody

Substitui o corpo da função especificada no módulo especificado.

Método ICorProfilerInfo::SetILInstrumentedCodeMap

Especifica como os deslocamentos de MSIL original da função especificada mapeiam para os novos deslocamentos da MSIL modificado criador de perfil da função.

Comentários

Um criador de perfil chama um método no ICorProfilerInfo interface para se comunicar com o CLR informações de solicitação e monitoramento de eventos de controle.

Os métodos do ICorProfilerInfo interface são implementados com o CLR usando o modelo de segmentação disponível. Cada método retorna um HRESULT para indicar êxito ou falha. Consulte CorError.h para uma lista de possíveis códigos de retorno.

O CLR passa, por meio de implementação do criador de perfil de ICorProfilerCallback::inicializar, an ICorProfilerInfo interface para cada código criador de perfil durante a inicializar. Um criador de perfil de código, em seguida, pode chamar métodos do ICorProfilerInfo interface para obter informações sobre o código gerenciado que está sendo executado sob o controle do CLR.

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

Consulte também

Referência

Interface ICorProfilerInfo2

Outros recursos

Interfaces de criação de perfil