Método ICorProfilerInfo2::GetFunctionInfo2
Obtém o pai de classe, 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 ID da função para o qual você 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 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 do pai da função é definida.pToken
[out] Um ponteiro para o token de metadados para a função.cTypeArgs
[in] O dimensionar do typeArgs matriz.pcTypeArgs
[out] Um ponteiro para o número total de ClassID valores.typeArgs
[out] Uma matriz de ClassID valores, cada uma delas é a ID do argumento de tipo da função. Quando o método retorna, typeArgs conterá alguns ou todos os ClassID valores.
Comentários
O código do criador de perfil pode telefonar ICorcriador de perfilInfo::GetModuleMetaData para obter um metadados interface para um determinado módulo. Token de metadados que é retornado para o local referenciado por pToken em seguida, pode ser usado para acessar os metadados para a função.
sistema autônomo argumentos de ID e o tipo de classe retornadas através de pClassId e typeArgs parâmetros dependem do valor que é passado na frameInfo parâmetro, conforme mostrado na tabela seguinte.
Valor do frameInfo parâmetro |
Resultado |
---|---|
A COR_PRF_FRAME_INFO valor que foi obtida de um FunctionEnter2 retorno de chamada |
The ClassID, retornado em local referenciado por pClassId, e todos os argumentos, retornados em de tipo a typeArgs matriz, será exato. |
A COR_PRF_FRAME_INFO que foi obtido de uma fonte diferente de um FunctionEnter2 retorno de chamada |
O exataClassID e os argumentos de tipo não podem ser determinados. Ou seja, a ClassID pode ser nulo e alguns argumentos de tipo podem vir sistema autônomo Object. |
Zero |
O exataClassID e os argumentos de tipo não podem ser determinados. Ou seja, a ClassID pode ser nulo e alguns argumentos de tipo podem vir sistema autônomo Object. |
Depois de GetFunctionInfo2 Retorna, você deve verificar que o typeArgs buffer era grande o suficiente para conter todos os ClassID valores. Para fazer isso, comparar o valor que pcTypeArgs aponta para com o valor das cTypeArgs parâmetro. If pcTypeArgs aponta para um valor que seja maior que cTypeArgs dividido pelo dimensionar de um ClassID o valor, alocar uma maior pcTypeArgs buffer, atualização cTypeArgs com a novo e maior dimensionar e telefonar GetFunctionInfo2 novamente.
Como alternativa, você pode primeiro telefonar GetFunctionInfo2 com um comprimento zero pcTypeArgs buffer para obter o dimensionar do buffer correto. Você pode então conjunto o dimensionar do buffer para o valor retornado em pcTypeArgs dividido pelo dimensionar de um ClassID valor e telefonar GetFunctionInfo2 novamente.
Para obter mais informações sobre essas duas abordagens, consulte Buffers alocados chamador da API de criação de perfil.
Requisitos
Plataformas: See Requisitos de sistema do .NET framework.
Cabeçalho: CorProf.h
Biblioteca: CorProf.idl
.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0