Sdílet prostřednictvím


FunctionEnter2 – funkce

Upozorní profiler, že se ovládací prvek předává funkci, a poskytne informace o rámci zásobníku a argumentech funkce. Tato funkce nahrazuje funkci FunctionEnter .

Syntaxe

void __stdcall FunctionEnter2 (  
    [in]  FunctionID                       funcId,
    [in]  UINT_PTR                         clientData,
    [in]  COR_PRF_FRAME_INFO               func,
    [in]  COR_PRF_FUNCTION_ARGUMENT_INFO  *argumentInfo  
);  

Parametry

funcId [v] Identifikátor funkce, do které je předán ovládací prvek.

clientData [v] Identifikátor přemapované funkce, který profiler dříve určil pomocí 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.

argumentInfo [v] Ukazatel na COR_PRF_FUNCTION_ARGUMENT_INFO strukturu, která určuje umístění argumentů funkce v paměti.

Aby bylo možné získat přístup k informacím o argumentu COR_PRF_ENABLE_FUNCTION_ARGS , 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 argumentInfo nejsou po FunctionEnter2 vrácení funkce platné, protože hodnoty se mohou změnit nebo být zničeny.

Funkce FunctionEnter2 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 FunctionEnter2 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 FunctionEnter2 se nevrátí.

FunctionEnter2 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é