Compartilhar via


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.

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[]);

Parâmetros

  • funcId
    [in] A ID da função para o qual você deseja obter o pai de classe e outras informações.

  • frameInfo
    [in] A COR_PRF_FRAME_INFO valor que aponta para informações sobre um registro de ativação.

  • pClassId
    [out] Um ponteiro para a classe pai da função.

  • pModuleId
    [out] Um ponteiro para o módulo no qual a classe do pai da função é definida.

  • pToken
    [out] Um ponteiro para o token de metadados para a função.

  • cTypeArgs
    [in] O dimensionar do typeArgs matriz.

  • pcTypeArgs
    [out] Um ponteiro para o número total de ClassID valores.

  • typeArgs
    [out] Uma matriz de ClassID valores, cada uma delas é a ID do argumento de tipo da função. Quando o método retorna, typeArgs conterá alguns ou todos os ClassID valores.

Comentários

O código do criador de perfil pode telefonar ICorcriador de perfilInfo::GetModuleMetaData para obter um metadados interface para um determinado módulo. Token de metadados que é retornado para o local referenciado por pToken em seguida, pode ser usado para acessar os metadados para a função.

sistema autônomo argumentos de ID e o tipo de classe retornadas através de pClassId e typeArgs parâmetros dependem do valor que é passado na frameInfo parâmetro, conforme mostrado na tabela seguinte.

Valor do frameInfo parâmetro

Resultado

A COR_PRF_FRAME_INFO valor que foi obtida de um FunctionEnter2 retorno de chamada

The ClassID, retornado em local referenciado por pClassId, e todos os argumentos, retornados em de tipo a typeArgs matriz, será exato.

A COR_PRF_FRAME_INFO que foi obtido de uma fonte diferente de um FunctionEnter2 retorno de chamada

O exataClassID e os argumentos de tipo não podem ser determinados. Ou seja, a ClassID pode ser nulo e alguns argumentos de tipo podem vir sistema autônomo Object.

Zero

O exataClassID e os argumentos de tipo não podem ser determinados. Ou seja, a ClassID pode ser nulo e alguns argumentos de tipo podem vir sistema autônomo Object.

Depois de GetFunctionInfo2 Retorna, você deve verificar que o typeArgs buffer era grande o suficiente para conter todos os ClassID valores. Para fazer isso, comparar o valor que pcTypeArgs aponta para com o valor das cTypeArgs parâmetro. If pcTypeArgs aponta para um valor que seja maior que cTypeArgs dividido pelo dimensionar de um ClassID o valor, alocar uma maior pcTypeArgs buffer, atualização cTypeArgs com a novo e maior dimensionar e telefonar GetFunctionInfo2 novamente.

Como alternativa, você pode primeiro telefonar GetFunctionInfo2 com um comprimento zero pcTypeArgs buffer para obter o dimensionar do buffer correto. Você pode então conjunto o dimensionar do buffer para o valor retornado em pcTypeArgs dividido pelo dimensionar de um ClassID valor e telefonar GetFunctionInfo2 novamente.

Para obter mais informações sobre essas duas abordagens, consulte Buffers alocados chamador da API de criação de perfil.

Requisitos

Plataformas: See Requisitos de sistema do .NET framework.

Cabeçalho: CorProf.h

Biblioteca: CorProf.idl

.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

Interface ICorProfilerInfo2

Outros recursos

Interfaces de criação de perfil

Criação de perfil (referência de API não gerenciada)