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