Compartilhar via


Método de ICorProfilerInfo2::GetFunctionInfo2

Obtém a classe pai, 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 identificação da função para o qual 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 quadro de pilha.

  • 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 tamanho da typeArgs matriz.

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

  • typeArgs
    [out] Uma matriz de ClassID valores, cada um deles é a identificação de um argumento de tipo de função. Quando o método retorna, typeArgs irá conter algumas ou todas as ClassID valores.

Comentários

O código do profiler pode chamar ICorProfilerInfo::GetModuleMetaData para obter um metadados interface para um determinado módulo. O token de metadados que é retornado para o local referenciado pelo pToken pode ser usado para acessar os metadados para a função.

Os argumentos de ID e o tipo de classe que são retornados por meio do pClassId e typeArgs parâmetros dependem do valor que é passado a frameInfo parâmetro, como mostrado na tabela a seguir.

Valor da frameInfo parâmetro

Resultado

A COR_PRF_FRAME_INFO valor que foi obtido um FunctionEnter2 retorno de chamada

O ClassID, retornado no local referenciado pelo pClassId, e todos tipo argumentos, retornados na typeArgs de matriz, será exato.

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

A exata ClassID e argumentos de tipo não podem ser determinados. Ou seja, o ClassID pode ser nulo e alguns argumentos de tipo podem vir como Object.

Zero

A exata ClassID e argumentos de tipo não podem ser determinados. Ou seja, o ClassID pode ser nulo e alguns argumentos de tipo podem vir como Object.

Depois de GetFunctionInfo2 retorna, você deve verificar se a typeArgs buffer era grande o suficiente para conter todos os ClassID valores. Para fazer isso, compare o valor que pcTypeArgs aponta com o valor de cTypeArgs parâmetro. Se pcTypeArgs aponta para um valor maior que cTypeArgs dividido pelo tamanho de um ClassID valor, alocar uma maior pcTypeArgs buffer, a atualização cTypeArgs com o novo tamanho maior e a chamada GetFunctionInfo2 novamente.

Como alternativa, você pode primeiro chamar GetFunctionInfo2 com um comprimento zero pcTypeArgs o buffer para obter o tamanho de buffer correto. Além disso, você pode então definir o tamanho do buffer para o valor retornado em pcTypeArgs dividido pelo tamanho de um ClassID valor e a chamada GetFunctionInfo2 novamente.

Para obter mais informações sobre essas duas abordagens, consulte Convenções de método de API de criação de perfil.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: Corprof. idl, CorProf.h

Biblioteca: CorGuids.lib

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

Interface de ICorProfilerInfo

Interface de ICorProfilerInfo2

Outros recursos

Interfaces de criação de perfil

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