Partilhar via


Método ICorProfilerInfo2::GetFunctionInfo2

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

Sintaxe

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] O ID da função para a qual obter a classe principal e outras informações.

frameInfo
[in] Um COR_PRF_FRAME_INFO valor que aponta para informações sobre uma moldura de pilha.

pClassId
[fora] Um ponteiro para a classe principal da função.

pModuleId
[fora] Um ponteiro para o módulo no qual a classe principal da função é definida.

pToken
[fora] Um ponteiro para o token de metadados da função.

cTypeArgs
[in] O tamanho da typeArgs matriz.

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

typeArgs
[fora] Uma matriz de ClassID valores, cada um dos quais é o ID de um argumento de tipo da função. Quando o método for devolvido, typeArgs irá conter alguns ou todos os ClassID valores.

Observações

O código do gerador de perfis pode chamar ICorProfilerInfo::GetModuleMetaData para obter uma interface de metadados para um determinado módulo. O token de metadados que é devolvido à localização referenciada pelo pToken pode ser utilizado para aceder aos metadados da função.

O ID de classe e os argumentos de tipo que são devolvidos através dos pClassId parâmetros e typeArgs dependem do valor transmitido no frameInfo parâmetro, conforme mostrado na tabela seguinte.

Valor do frameInfo parâmetro Resultado
Um COR_PRF_FRAME_INFO valor obtido a partir de uma FunctionEnter2 chamada de retorno O ClassID, devolvido na localização referenciada por pClassId, e todos os argumentos de tipo, devolvidos na typeArgs matriz, serão exatos.
Um COR_PRF_FRAME_INFO obtido a partir de uma origem que não seja uma FunctionEnter2 chamada de retorno Não é possível determinar os argumentos exatos ClassID e de tipo. Ou seja, o ClassID pode ser nulo e alguns argumentos de tipo podem voltar a Objectser .
Zero Não é possível determinar os argumentos exatos ClassID e de tipo. Ou seja, o ClassID pode ser nulo e alguns argumentos de tipo podem voltar a Objectser .

Após GetFunctionInfo2 a devolução, tem de verificar se a typeArgs memória intermédia era suficientemente grande para conter todos os ClassID valores. Para tal, compare o valor que pcTypeArgs aponta com o valor do cTypeArgs parâmetro . Se pcTypeArgs apontar para um valor maior do que cTypeArgs dividido pelo tamanho de um ClassID valor, aloque uma memória intermédia maior pcTypeArgs , atualize cTypeArgs com o novo tamanho maior e chame GetFunctionInfo2 novamente.

Em alternativa, pode chamar GetFunctionInfo2 primeiro com uma memória intermédia de comprimento pcTypeArgs zero para obter o tamanho correto da memória intermédia. Em seguida, pode definir o tamanho da memória intermédia para o valor devolvido em pcTypeArgs dividido pelo tamanho de um ClassID valor e chamar GetFunctionInfo2 novamente.

Requisitos

Plataformas: Veja Requisitos de Sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

.NET Framework Versões: Disponível desde 2.0

Ver também