Método 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.
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] A ID da função para a qual obter a classe pai e outras informações.
frameInfo
[in] Um valor COR_PRF_FRAME_INFO
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 pai da função é definida.
pToken
[out] Um ponteiro para o token de metadados da função.
cTypeArgs
[in] O tamanho da matriz typeArgs
.
pcTypeArgs
[out] Um ponteiro para o número total de ClassID
valores.
typeArgs
[out] Uma matriz de valores ClassID
, cada um deles é a ID de um argumento de tipo da função. Quando o método retornar, typeArgs
conterá alguns dos ou todos os valores ClassID
.
Comentários
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 por pToken
pode 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 parâmetros pClassId
e typeArgs
dependem do valor passado no parâmetro frameInfo
, conforme mostrado na tabela a seguir.
Valor do parâmetro frameInfo |
Result |
---|---|
Um valor COR_PRF_FRAME_INFO que foi obtido de um retorno de chamada FunctionEnter2 |
O ClassID , retornado no local referenciado por pClassId , e todos os argumentos de tipo, retornados na matriz typeArgs , serão exatos. |
Um COR_PRF_FRAME_INFO que foi obtido de uma origem diferente de um retorno de chamada FunctionEnter2 |
Os argumentos de tipo e ClassID exatos não podem ser determinados. Ou seja, o valor ClassID pode ser nulo, e alguns argumentos de tipo podem voltar como Object. |
Zero | Os argumentos de tipo e ClassID exatos não podem ser determinados. Ou seja, o valor ClassID pode ser nulo, e alguns argumentos de tipo podem voltar como Object. |
Após o retorno de GetFunctionInfo2
, você deve verificar se o buffer typeArgs
era grande o suficiente para conter todos os valores ClassID
. Para fazer isso, compare o valor para o qual pcTypeArgs
aponta com o valor do parâmetro cTypeArgs
. Se pcTypeArgs
apontar para um valor maior do que cTypeArgs
dividido pelo tamanho de um valor ClassID
, aloque um buffer pcTypeArgs
maior, atualize cTypeArgs
com o novo tamanho maior e chame GetFunctionInfo2
novamente.
Como alternativa, primeiro você pode chamar GetFunctionInfo2
com um buffer pcTypeArgs
de comprimento zero para obter o tamanho correto do buffer. Em seguida, você pode definir o tamanho do buffer para o valor retornado em pcTypeArgs
dividido pelo tamanho de um valor ClassID
e chamar GetFunctionInfo2
novamente.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: disponíveis desde 2.0