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