Compartilhar via


ICorProfilerInfo2::GetFunctionInfo2 Method

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

Syntax

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

Parameters

funcId [in] A ID da função para a qual obter a classe pai e outras informações.

frameInfo [in] Um 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 pai da função é definida.

pToken [out] Um ponteiro para o token de metadados da 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 ID de um argumento de tipo da função. Quando o método retornar, typeArgs conterá alguns ou todos os ClassID valores.

Remarks

O código do criador de perfil pode chamar ICorProfilerInfo::GetModuleMetaData para obter uma interface de metadados para um determinado módulo. O token de metadados retornado ao local referenciado pode pToken ser usado para acessar os metadados da função.

A ID da classe e os argumentos de tipo que são retornados por meio dos pClassId parâmetros e typeArgs dependem do valor passado no frameInfo parâmetro, conforme mostrado na tabela a seguir.

Valor do parâmetro frameInfo Result
Um COR_PRF_FRAME_INFO valor obtido de um FunctionEnter2 retorno de chamada O ClassID, retornado no local referenciado por pClassId, e todos os argumentos de tipo, retornados na typeArgs matriz, serão exatos.
Um COR_PRF_FRAME_INFO que foi obtido de uma fonte diferente de um FunctionEnter2 retorno de chamada Os argumentos exatos ClassID e de tipo não podem ser determinados. Ou seja, o ClassID pode ser nulo e alguns argumentos de tipo podem voltar como Object.
Zero Os argumentos exatos ClassID e de tipo não podem ser determinados. Ou seja, o ClassID pode ser nulo e alguns argumentos de tipo podem voltar como Object.

Após GetFunctionInfo2 o retorno, você deve verificar se o typeArgs buffer era grande o suficiente para conter todos os ClassID valores. Para fazer isso, compare o valor que pcTypeArgs aponta para o valor do cTypeArgs parâmetro. Se pcTypeArgs apontar para um valor maior do que cTypeArgs dividido pelo tamanho de um ClassID valor, aloque um buffer maior pcTypeArgs , atualize cTypeArgs com o novo tamanho maior e chame GetFunctionInfo2 novamente.

Como alternativa, você pode primeiro chamar GetFunctionInfo2 com um buffer de comprimento pcTypeArgs zero para obter o tamanho correto do buffer. Em seguida, você pode definir o tamanho do buffer como o valor retornado em pcTypeArgs dividido pelo tamanho de um ClassID valor e chamar GetFunctionInfo2 novamente.

Requirements

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Library: CorGuids.lib

versões do .NET Framework: disponíveis desde 2.0

See also