Dela via


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

Se även