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 __declspec
klasy 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