FunctionTailcall-funktion
Meddelar profileraren att funktionen som körs just nu är på väg att utföra ett tail-anrop till en annan funktion.
Anteckning
Funktionen FunctionTailcall
är inaktuell i .NET Framework version 2.0. Det kommer att fortsätta att fungera, men kommer att medföra en prestationsstraff. Använd funktionen FunctionTailcall2 i stället.
Syntax
void __stdcall FunctionTailcall (
[in] FunctionID funcID
);
Parametrar
funcID
[i] Identifieraren för den funktion som körs just nu och som håller på att göra ett tail-anrop.
Kommentarer
Tail-anropets målfunktion använder den aktuella stackramen och återgår direkt till anroparen för funktionen som gjorde tail-anropet. Det innebär att en FunctionLeave-motringning inte utfärdas för en funktion som är målet för ett tail-anrop.
Funktionen FunctionTailcall
är en motringning. Du måste implementera den. Implementeringen måste använda attributet __declspec
(naked
) storage-class.
Körningsmotorn sparar inga register innan den här funktionen anropas.
Vid inmatningen måste du spara alla register som du använder, inklusive de i flyttalsenheten (FPU).
När du avslutar måste du återställa stacken genom att ta bort alla parametrar som push-överfördes av anroparen.
Implementeringen av FunctionTailcall
bör inte blockeras eftersom det fördröjer skräpinsamlingen. Implementeringen bör inte försöka med en skräpinsamling eftersom stacken kanske inte är i ett skräpinsamlingsvänligt tillstånd. Om en skräpinsamling görs blockeras körningen tills FunctionTailcall
den returneras.
FunctionTailcall
Dessutom får funktionen inte anropa till hanterad kod eller på något sätt orsaka en hanterad minnesallokering.
Krav
Plattformar: Se Systemkrav.
Huvudet: CorProf.idl
Bibliotek: CorGuids.lib
.NET Framework versioner: 1.1, 1.0