Condividi tramite


Metodo ICorProfilerInfo2::GetFunctionInfo2

Ottiene la classe padre, il token di metadati e l'elemento ClassID di ciascun argomento di tipo, se presente, di una funzione.

Sintassi

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[]);  

Parametri

funcId
[in] ID della funzione per cui ottenere la classe padre e altre informazioni.

frameInfo
[in] Valore COR_PRF_FRAME_INFO che punta alle informazioni su uno stack frame.

pClassId
[out] Puntatore alla classe padre della funzione.

pModuleId
[out] Puntatore al modulo in cui è definita la classe padre della funzione.

pToken
[out] Puntatore al token di metadati per la funzione.

cTypeArgs
[in] Dimensione della matrice typeArgs.

pcTypeArgs
[out] Puntatore al numero complessivo di valori ClassID.

typeArgs
[out] Matrice di valori ClassID, ognuno dei quali è l'ID di un argomento tipo della funzione. Dopo il completamento del metodo, typeArgs conterrà tutti i valori ClassID o alcuni di essi.

Commenti

Il codice del profiler può chiamare ICorProfilerInfo::GetModuleMetaData per ottenere un'interfaccia di metadati per un determinato modulo. Il token di metadati restituito nella posizione a cui fa riferimento pToken può quindi essere usato per accedere ai metadati per la funzione.

L'ID classe e gli argomenti di tipo restituiti tramite i parametri pClassId e typeArgs dipendono dal valore passato nel parametro frameInfo, come illustrato nella tabella seguente.

Valore del parametro frameInfo Risultato
Valore COR_PRF_FRAME_INFO ottenuto da un callback di FunctionEnter2 L'elemento ClassID, restituito nella posizione a cui fa riferimento pClassId, e tutti gli argomenti di tipo, restituiti nella matrice typeArgs, saranno determinati in modo esatto.
Valore COR_PRF_FRAME_INFO ottenuto da un'origine diversa da un callback di FunctionEnter2 Non è possibile determinare in modo esatto l'elemento ClassID e gli argomenti di tipo. Ciò significa che ClassID potrebbe essere null e che alcuni argomenti tipo potrebbero venire restituiti come Object.
Zero Non è possibile determinare in modo esatto l'elemento ClassID e gli argomenti di tipo. Ciò significa che ClassID potrebbe essere null e che alcuni argomenti tipo potrebbero venire restituiti come Object.

Dopo il completamento del metodo GetFunctionInfo2, è necessario verificare che il buffer typeArgs sia abbastanza grande per contenere tutti i valori ClassID. A tale scopo, confrontare il valore a cui punta pcTypeArgs con il valore del parametro cTypeArgs. Se pcTypeArgs punta a un valore maggiore di cTypeArgs diviso per la dimensione di un valore ClassID, allocare un buffer pcTypeArgs più grande, aggiornare cTypeArgs con la nuova dimensione e chiamare nuovamente GetFunctionInfo2.

In alternativa, è possibile chiamare innanzitutto GetFunctionInfo2 con un buffer pcTypeArgs di lunghezza zero per ottenere le dimensioni del buffer corrette. È quindi possibile impostare le dimensioni del buffer sul valore restituito in pcTypeArgs diviso per la dimensione di un valore ClassID e chiamare di nuovo GetFunctionInfo2.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorProf.idl, CorProf.h

Libreria: CorGuids.lib

Versioni di .NET Framework: Disponibile dalla versione 2.0

Vedi anche