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 ICorProfilerInfo2