Udostępnij za pośrednictwem


FunctionTailcall — Funkcja

Powiadamia profilera, że aktualnie wykonywana funkcja ma wykonać wywołanie ogona do innej funkcji.

Uwaga

Funkcja FunctionTailcall jest przestarzała w wersji .NET Framework w wersji 2.0. Będzie nadal działać, ale będzie ponosić karę za wydajność. Zamiast tego użyj funkcji FunctionTailcall2 .

Składnia

void __stdcall FunctionTailcall (  
    [in] FunctionID funcID  
);  

Parametry

funcID [w] Identyfikator aktualnie wykonywanej funkcji, która ma na celu wywołanie ogona.

Uwagi

Funkcja docelowa wywołania ogona będzie używać bieżącej ramki stosu i powróci bezpośrednio do obiektu wywołującego funkcję, która wykonała wywołanie ogona. Oznacza to, że wywołanie zwrotne funkcji FunctionLeave nie zostanie wydane dla funkcji, która jest elementem docelowym wywołania końcowego.

Funkcja FunctionTailcall jest wywołaniem zwrotnym. Należy ją zaimplementować. Implementacja musi używać atrybutu __declspecklasy magazynu (naked).

Aparat wykonywania nie zapisuje żadnych rejestrów przed wywołaniem tej funkcji.

  • Podczas wprowadzania należy zapisać wszystkie używane rejestry, w tym te w jednostce zmiennoprzecinkowej (FPU).

  • Po wyjściu należy przywrócić stos, wyskakując wszystkie parametry wypchnięte przez jego obiekt wywołujący.

Implementacja nie powinna blokować, FunctionTailcall ponieważ opóźni odzyskiwanie pamięci. Implementacja nie powinna próbować odzyskiwania pamięci, ponieważ stos może nie być w stanie przyjaznym dla odzyskiwania pamięci. Jeśli zostanie podjęta próba odzyskiwania pamięci, środowisko uruchomieniowe zostanie zablokowane do momentu FunctionTailcall powrotu.

FunctionTailcall Ponadto funkcja nie może wywoływać kodu zarządzanego ani w żaden sposób powodować alokację pamięci zarządzanej.

Wymagania

Platformy: Zobacz Wymagania systemowe.

Nagłówka: CorProf.idl

Biblioteki: CorGuids.lib

.NET Framework wersje: 1.1, 1.0

Zobacz też