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 __declspec
atribut (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