Compartilhar via


Interface ICorProfilerInfo2

Fornece métodos que geradores de perfis de código usam para se comunicar com o common linguagem tempo de execução (CLR) para controlar evento monitoramento e solicitação de informações. The ICorProfilerInfo2 interface é uma extensão das ICorProfilerInfo interface. Ou seja, ele oferece novos métodos com suporte no .NET estrutura versão 2.0 e versões posteriores.

interface ICorProfilerInfo2 : ICorProfilerInfo
{
    HRESULT DoStackSnapshot(
        [in] ThreadID thread,
        [in] StackSnapshotCallback *callback,
        [in] ULONG32 infoFlags,
        [in] void *clientData,
        [in, size_is(contextSize), length_is(contextSize)] BYTE context[],
        [in] ULONG32 contextSize);

    HRESULT SetEnterLeaveFunctionHooks2(
        [in] FunctionEnter2    *pFuncEnter,
        [in] FunctionLeave2    *pFuncLeave,
        [in] FunctionTailcall2 *pFuncTailcall);

    HRESULT GetFunctionInfo2(
        [in] FunctionID funcId,
        [in] COR_PRF_FRAME_INFO frameInfo,
        [out] ClassID *pClassId,
        [out] ModuleID *pModuleId,
        [out] mdToken *pToken,
        [in] ULONG32 cTypeArgs,
        [out] ULONG32 *pcTypeArgs,
        [out] ClassID typeArgs[]);

    HRESULT GetStringLayout(
        [out] ULONG *pBufferLengthOffset,
        [out] ULONG *pStringLengthOffset,
        [out] ULONG *pBufferOffset);

    HRESULT GetClassLayout(
        [in]  ClassID classID,
        [in, out] COR_FIELD_OFFSET rFieldOffset[],
        [in] ULONG cFieldOffset,
        [out] ULONG *pcFieldOffset,
        [out] ULONG *pulClassSize);

    HRESULT GetClassIDInfo2(
        [in] ClassID classId,
        [out] ModuleID *pModuleId,
        [out] mdTypeDef *pTypeDefToken,
        [out] ClassID *pParentClassId,
        [in] ULONG32 cNumTypeArgs,
        [out] ULONG32 *pcNumTypeArgs,
        [out] ClassID typeArgs[]);

    HRESULT GetCodeInfo2(
        [in] FunctionID functionID,
        [in] ULONG32 cCodeInfos,
        [out] ULONG32 *pcCodeInfos,
        [out, size_is(cCodeInfos), length_is(*pcCodeInfos)]
                COR_PRF_CODE_INFO codeInfos[]);

        HRESULT GetClassFromTokenAndTypeArgs(
        [in] ModuleID moduleID,
        [in] mdTypeDef typeDef,
        [in] ULONG32 cTypeArgs,
        [in, size_is(cTypeArgs)] ClassID typeArgs[],
        [out] ClassID* pClassID);

    HRESULT GetFunctionFromTokenAndTypeArgs(
        [in] ModuleID moduleID,
        [in] mdMethodDef funcDef,
        [in] ClassID classId,
        [in] ULONG32 cTypeArgs,
        [in, size_is(cTypeArgs)] ClassID typeArgs[],
        [out] FunctionID* pFunctionID);

    HRESULT EnumModuleFrozenObjects(
        [in] ModuleID moduleID,
        [out] ICorProfilerObjectEnum** ppEnum);

    HRESULT GetArrayObjectInfo(
        [in] ObjectID objectId,
        [in] ULONG32 cDimensions,
        [out, size_is(cDimensions), length_is(cDimensions)] ULONG32 pDimensionSizes[],
        [out, size_is(cDimensions), length_is(cDimensions)] int pDimensionLowerBounds[],
        [out] BYTE **ppData);

    HRESULT GetBoxClassLayout(
        [in] ClassID classId,
        [out] ULONG32 *pBufferOffset);

    HRESULT GetThreadAppDomain(
        [in] ThreadID threadId,
        [out] AppDomainID *pAppDomainId);

    HRESULT GetRVAStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [out] void **ppAddress);

    HRESULT GetAppDomainStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [in] AppDomainID appDomainId,
        [out] void **ppAddress);

    HRESULT GetThreadStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [in] ThreadID threadId,
        [out] void **ppAddress);

    HRESULT GetContextStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [in] ContextID contextId,
        [out] void **ppAddress);

    HRESULT GetStaticFieldInfo(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [out] COR_PRF_STATIC_TYPE *pFieldInfo);

    HRESULT GetGenerationBounds(
        [in] ULONG cObjectRanges,
        [out] ULONG *pcObjectRanges,
        [out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);

    HRESULT GetObjectGeneration(
        [in] ObjectID objectId,
        [out] COR_PRF_GC_GENERATION_RANGE *range);

    HRESULT GetNotifiedExceptionClauseInfo(
        [out] COR_PRF_EX_CLAUSE_INFO *pinfo);
}

Métodos

Método

Descrição

Método ICorProfilerInfo2::DoStackSnapshot

Examina a pilha do segmento especificado ao relatório gerenciado telefonar quadros para o criador de perfil.

Método ICorProfilerInfo2::EnumModuleFrozenObjects

Obtém um enumerador que permite a iteração sobre os objetos congelados no módulo especificado.

Método ICorProfilerInfo2::GetAppDomainStaticAddress

Obtém o endereço do campo estático domínio aplicativo especificado que está no escopo do domínio do aplicativo especificado.

Método ICorProfilerInfo2::GetArrayObjectInfo

Obtém informações detalhadas sobre um objeto de matriz.

Método ICorProfilerInfo2::GetBoxClassLayout

Obtém informações sobre o layout de classe para um tipo de valor especificado for in a box.

Método ICorProfilerInfo2::GetClassFromTokenAndTypeArgs

Obtém o ClassID de um tipo usando o token de metadados especificado e o ClassID valores de quaisquer argumentos de tipo.

Método ICorProfilerInfo2::GetClassIDInfo2

Obtém o módulo pai a classe genérica especificada, o token de metadados para a classe, a ClassID de sua classe pai e o ClassID para cada argumento de tipo, se presente, da classe.

Método ICorProfilerInfo2::GetClassLayout

Obtém informações sobre o layout na memória, dos campos definidas pela classe especificada. Ou seja, esse método obtém os deslocamentos de campos da classe.

Método ICorProfilerInfo2::GetCodeInfo2

Obtém as extensões de código nativo associado com o especificado FunctionID.

Método ICorProfilerInfo2::GetContextStaticAddress

Obtém o endereço do campo de contexto estático especificado está no escopo do contexto especificado.

Método ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs

Obtém o FunctionID de uma função usando o token de metadados especificado, que contém a classe, e ClassID valores de quaisquer argumentos de tipo.

Método ICorProfilerInfo2::GetFunctionInfo2

Obtém o pai de classe, o token de metadados e o ClassID de cada argumento de tipo, se presente, de uma função.

Método ICorProfilerInfo2::GetGenerationBounds

Obtém as regiões de memória (segmentos de pilha) que compõem as gerações da heap coletado ao lixo.

Método ICorProfilerInfo2::GetNotifiedExceptionClauseInfo

Obtém as informações de endereço e o quadro nativas para a cláusula de exceção (catch/finally/filter) que está prestes a ser executada ou foi executada.

Método ICorProfilerInfo2::GetObjectGeneration

Obtém o segmento da pilha que contém o objeto especificado.

Método ICorProfilerInfo2::GetRVAStaticAddress

Obtém o endereço do especificado relativo endereço virtual (RVA)-campo estático.

Método ICorProfilerInfo2::GetStaticFieldInfo

Obtém o escopo no qual o campo especificado é estático.

Método ICorProfilerInfo2::GetStringLayout

Obtém informações sobre o layout de um objeto de seqüência de caracteres.

Método ICorProfilerInfo2::GetThreadAppDomain

Obtém o ID do domínio do aplicativo no qual o thread especificado está sendo atualmente executado código.

Método ICorProfilerInfo2::GetThreadStaticAddress

Obtém o endereço do campo de thread estático especificado está no escopo do segmento especificado.

Método ICorProfilerInfo2::SetEnterLeaveFunctionHooks2

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

Comentários

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

Os métodos do ICorProfilerInfo2 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. Para obter uma lista de códigos de retorno possíveis, consulte o arquivo CorError.h.

O CLR passa um ICorProfilerInfo2 interface para cada criador de perfil do código durante a inicializar, usando de implementação o criador de perfil do ICorProfilerCallback::inicializar. Um criador de perfil de código, em seguida, pode chamar métodos do ICorProfilerInfo2 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 ICorProfilerInfo

Outros recursos

Interfaces de criação de perfil