Dela via


ICorProfilerInfo2::GetFunctionInfo2, metod

Hämtar den överordnade klassen, metadatatoken och ClassID för varje typargument, om det finns, för en funktion.

Syntax

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

Parametrar

funcId
[in] ID:t för funktionen som den överordnade klassen ska hämtas för och annan information.

frameInfo
[in] Ett COR_PRF_FRAME_INFO värde som pekar på information om en stackram.

pClassId
[ut] En pekare till funktionens överordnade klass.

pModuleId
[ut] En pekare till modulen där funktionens överordnade klass definieras.

pToken
[ut] En pekare till funktionens metadatatoken.

cTypeArgs
[in] Matrisens typeArgs storlek.

pcTypeArgs
[ut] En pekare till det totala antalet ClassID värden.

typeArgs
[ut] En matris med ClassID värden, som var och en är ID:t för ett typargument för funktionen. När metoden returneras typeArgs innehåller vissa eller alla ClassID värden.

Kommentarer

Profilerarkoden kan anropa ICorProfilerInfo::GetModuleMetaData för att hämta ett metadatagränssnitt för en viss modul. Metadatatoken som returneras till den plats som refereras av pToken kan sedan användas för att komma åt metadata för funktionen.

Klass-ID:t och typargumenten som returneras via parametrarna pClassId och typeArgs beror på det värde som skickas i parametern frameInfo , enligt följande tabell.

Parameterns frameInfo värde Resultat
Ett COR_PRF_FRAME_INFO värde som hämtades från ett FunctionEnter2 återanrop , ClassIDsom returneras på den plats som refereras av pClassId, och alla typargument, som returneras i matrisen typeArgs , kommer att vara exakta.
En COR_PRF_FRAME_INFO som hämtades från en annan källa än ett FunctionEnter2 återanrop Det går inte att fastställa exakta ClassID argument och typargument. Det kan alltså ClassID vara null och vissa typargument kan komma tillbaka som Object.
Noll Det går inte att fastställa exakta ClassID argument och typargument. Det kan alltså ClassID vara null och vissa typargument kan komma tillbaka som Object.

När GetFunctionInfo2 du har returnerat måste du kontrollera att bufferten typeArgs var tillräckligt stor för att innehålla alla ClassID värden. Det gör du genom att jämföra värdet som pcTypeArgs pekar på med värdet för parametern cTypeArgs . Om pcTypeArgs pekar på ett värde som är större än cTypeArgs dividerat med storleken på ett ClassID värde allokerar du en större pcTypeArgs buffert, uppdaterar cTypeArgs med den nya, större storleken och anropar GetFunctionInfo2 igen.

Du kan också först anropa GetFunctionInfo2 med en buffert med noll längd pcTypeArgs för att få rätt buffertstorlek. Du kan sedan ange buffertstorleken till det värde som returneras dividerat pcTypeArgs med storleken på ett ClassID värde och anropa GetFunctionInfo2 igen.

Krav

Plattformar: Se Systemkrav.

Huvudet: CorProf.idl, CorProf.h

Bibliotek: CorGuids.lib

.NET Framework versioner: Tillgänglig sedan 2.0

Se även