Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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