Sdílet prostřednictvím


FunctionLeave2 – funkce

Upozorní profiler, že se funkce chystá vrátit volajícímu, a poskytne informace o rámci zásobníku a návratové hodnotě funkce.

Syntaxe

void __stdcall FunctionLeave2 (  
    [in]  FunctionID                        funcId,  
    [in]  UINT_PTR                          clientData,  
    [in]  COR_PRF_FRAME_INFO                func,  
    [in]  COR_PRF_FUNCTION_ARGUMENT_RANGE  *retvalRange  
);  

Parametry

funcId [v] Identifikátor funkce, která se vrací.

clientData [v] Identifikátor přemapované funkce, který profiler dříve určil prostřednictvím funkce FunctionIDMapper .

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

Profiler by to měl považovat za neprůhlhlý popisovač, který lze předat zpět do prováděcího modulu v ICorProfilerInfo2::GetFunctionInfo2 metoda.

retvalRange [v] Ukazatel na COR_PRF_FUNCTION_ARGUMENT_RANGE strukturu, která určuje umístění v paměti návratové hodnoty funkce.

Aby bylo možné získat přístup k informacím o návratové hodnotě COR_PRF_ENABLE_FUNCTION_RETVAL , musí být nastaven příznak. Profiler může použít ICorProfilerInfo::SetEventMask metoda nastavit příznaky událostí.

Poznámky

Hodnoty func parametrů a retvalRange nejsou po FunctionLeave2 vrácení funkce platné, protože hodnoty se mohou změnit nebo být zničeny.

Funkce FunctionLeave2 je zpětné volání. Musíte ji implementovat. Implementace musí používat __declspecatribut (naked) třídy úložiště.

Spouštěcí modul neukládá žádné registry před voláním této funkce.

  • Při zadání musíte uložit všechny registry, které používáte, včetně těch v jednotce s plovoucí desetinou čárkou (FPU).

  • Při ukončení musíte zásobník obnovit tak, že vysunete všechny parametry, které volající nasdílel.

Implementace FunctionLeave2 by neměla blokovat, protože zpozdí uvolňování paměti. Implementace by se neměla pokoušet o uvolňování paměti, protože zásobník nemusí být ve stavu, který je šetrný k uvolňování paměti. Pokud se pokusíte o uvolnění paměti, modul runtime se zablokuje, dokud FunctionLeave2 se nevrátí.

FunctionLeave2 Funkce také nesmí volat spravovaný kód ani žádným způsobem způsobit přidělení spravované paměti.

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: CorProf.idl

Knihovny: CorGuids.lib

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

Viz také