Sdílet prostřednictvím


ICorProfilerInfo2::GetFunctionInfo2 – metoda

Získá nadřazenou třídu, token metadat a ClassID argument každého typu, pokud existuje, funkce.

Syntaxe

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

Parametry

funcId
[v] ID funkce, pro kterou chcete získat nadřazenou třídu a další informace.

frameInfo
[v] Hodnota COR_PRF_FRAME_INFO , která odkazuje na informace o rámci zásobníku.

pClassId
[out] Ukazatel na nadřazenou třídu funkce.

pModuleId
[out] Ukazatel na modul, ve kterém je definována nadřazená třída funkce.

pToken
[out] Ukazatel na token metadat pro funkci.

cTypeArgs
[v] Velikost typeArgs pole.

pcTypeArgs
[out] Ukazatel na celkový počet ClassID hodnot.

typeArgs
[out] Pole ClassID hodnot, z nichž každá představuje ID argumentu typu funkce. Když metoda vrátí, typeArgs bude obsahovat některé nebo všechny ClassID hodnoty.

Poznámky

Kód profileru může volat ICorProfilerInfo::GetModuleMetaData k získání rozhraní metadat pro daný modul. Token metadat vrácený do umístění, na které odkazuje, pToken se pak dá použít pro přístup k metadatům funkce.

Id třídy a argumenty typu, které jsou vráceny prostřednictvím pClassId parametrů a typeArgs , závisí na hodnotě, která je předána v parametru frameInfo , jak je znázorněno v následující tabulce.

Hodnota parametru frameInfo Výsledek
Hodnota COR_PRF_FRAME_INFO získaná ze zpětného FunctionEnter2 volání Hodnoty ClassIDvrácené v umístění, na které pClassIdodkazuje , a všechny argumenty typu vrácené v typeArgs poli budou přesné.
A COR_PRF_FRAME_INFO , který byl získán z jiného zdroje než FunctionEnter2 zpětné volání ClassID Přesné argumenty a typu nelze určit. To znamená, ClassID že hodnota může být null a některé argumenty typu se můžou vrátit jako Object.
Žádnou ClassID Přesné argumenty a typu nelze určit. To znamená, ClassID že hodnota může být null a některé argumenty typu se můžou vrátit jako Object.

Po GetFunctionInfo2 vrácení je nutné ověřit, že typeArgs vyrovnávací paměť byla dostatečně velká, aby obsahovala ClassID všechny hodnoty. Provedete to tak, že porovnáte hodnotu, na kterou odkazujete pcTypeArgs , s hodnotou parametru cTypeArgs . Pokud pcTypeArgs odkazuje na hodnotu, která je větší než cTypeArgs vydělená velikostí ClassID hodnoty, přidělte větší pcTypeArgs vyrovnávací paměť, aktualizujte cTypeArgs novou, větší velikost a zavolejte GetFunctionInfo2 znovu.

Případně můžete nejprve volat GetFunctionInfo2 vyrovnávací paměť nulové délky pcTypeArgs , abyste získali správnou velikost vyrovnávací paměti. Pak můžete nastavit velikost vyrovnávací paměti na vrácenou hodnotu vydělenou pcTypeArgs velikostí ClassID hodnoty a volat GetFunctionInfo2 znovu.

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: CorProf.idl, CorProf.h

Knihovny: CorGuids.lib

Verze rozhraní .NET Framework: K dispozici od verze 2.0

Viz také