Condividi tramite


Metodo ICorProfilerInfo2::GetFunctionInfo2

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

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 la quale ottenere la classe padre e le 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 nel quale è 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 di ClassID.

  • typeArgs
    [out] Matrice di valori ClassID, ognuno dei quali è l'ID di un argomento di tipo della funzione. Quando il metodo restituisce i risultati, typeArgs conterrà alcuni o tutti i valori di ClassID.

Note

Il codice del profiler può chiamare ICorProfilerInfo::GetModuleMetaData per ottenere un'interfaccia di metadati per un determinato modulo. Il token di metadati restituito al percorso a cui viene fatto riferimento tramite pToken può quindi essere utilizzato per accedere ai metadati per la funzione.

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

Valore del parametro frameInfo

Risultato

Valore COR_PRF_FRAME_INFO ottenuto da un callback di FunctionEnter2

Il valore ClassID, restituito nel percorso a cui viene fatto riferimento tramite pClassId, e tutti gli argomenti di tipo, restituiti nella matrice typeArgs, saranno esatti.

Struttura COR_PRF_FRAME_INFO ottenuta da un'origine diversa da un callback di FunctionEnter2

Non è possibile determinare il valore ClassID e gli argomenti di tipo esatti. In altri termini, ClassID potrebbe essere null e alcuni argomenti di tipo potrebbero tornare come Object.

Zero

Non è possibile determinare il valore ClassID e gli argomenti di tipo esatti. In altri termini, ClassID potrebbe essere null e alcuni argomenti di tipo potrebbero tornare come Object.

Dopo la restituzione dei risultati da parte di GetFunctionInfo2, è necessario verificare se il buffer typeArgs fosse abbastanza grande per contenere i valori ClassID. A tal fine, confrontare il valore al quale punta pcTypeArgs con il valore del parametro cTypeArgs. Se pcTypeArgs punta a un valore maggiore di cTypeArgs diviso la dimensione del valore di un ClassID, allocare un buffer pcTypeArgs più grande, aggiornare cTypeArgs con una dimensione nuova maggiore e chiamare nuovamente GetFunctionInfo2.

In alternativa, è possibile chiamare dapprima GetFunctionInfo2 con un buffer pcTypeArgs di lunghezza zero per ottenere la dimensione del buffer corretta. È quindi possibile impostare la dimensione del buffer sul valore restituito in pcTypeArgs diviso la dimensione del valore di un ClassID e chiamare nuovamente GetFunctionInfo2.

Per ulteriori informazioni su questi due approcci, vedere Convenzioni dei metodi dell'API di profilatura.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorProf.idl, CorProf.h

Libreria: CorGuids.lib

Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vedere anche

Riferimenti

Interfaccia ICorProfilerInfo

Interfaccia ICorProfilerInfo2

Altre risorse

Interfacce di profilatura

Profilatura (riferimenti alle API non gestite)