Sdílet prostřednictvím


FunctionTailcall2 – funkce

Upozorní profiler, že aktuálně spuštěná funkce se chystá provést koncové volání jiné funkce a poskytne informace o rámci zásobníku.

Syntaxe

void __stdcall FunctionTailcall2 (  
    [in] FunctionID         funcId,
    [in] UINT_PTR           clientData,
    [in] COR_PRF_FRAME_INFO func  
);  

Parametry

funcId [v] Identifikátor aktuálně spuštěné funkce, která se chystá provést koncové volání.

clientData [v] Přemapovaný identifikátor funkce, který profiler dříve určil prostřednictvím FunctionIDMapper aktuálně spuštěné funkce, která se chystá provést koncové volání.

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ůhláhlý popisovač, který lze předat zpět do prováděcího modulu v ICorProfilerInfo2::GetFunctionInfo2 metoda.

Poznámky

Cílová funkce koncového volání použije aktuální rámec zásobníku a vrátí se přímo volajícímu funkce, která provedla koncové volání. To znamená, že zpětné volání FunctionLeave2 nebude vydáno pro funkci, která je cílem koncového volání.

Hodnota parametru func není po vrácení funkce platná FunctionTailcall2 , protože hodnota se může změnit nebo být zničena.

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

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

  • Při vstupu 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 zobrazíte všechny parametry, které byly vloženy volajícím.

Implementace FunctionTailcall2 nástroje by neměla být blokovaná, 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 vhodném pro uvolňování paměti. Pokud dojde k pokusu o uvolnění paměti, modul runtime se zablokuje, dokud FunctionTailcall2 se nevrátí.

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