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