Dela via


FunctionTailcall2- funktion

Meddelar profileraren att den funktion som körs just nu är på väg att utföra ett avslutande anrop till en annan funktion och tillhandahåller information om stackramen.

Syntax

void __stdcall FunctionTailcall2 (  
    [in] FunctionID         funcId,
    [in] UINT_PTR           clientData,
    [in] COR_PRF_FRAME_INFO func  
);  

Parametrar

funcId [in] Identifieraren för den funktion som körs just nu och som håller på att göra ett avslutande anrop.

clientData [in] Den ommappade funktionsidentifieraren, som profileraren tidigare angav via FunctionIDMapper, för den funktion som körs för närvarande och som är på väg att göra ett slutanrop.

func [in] Ett COR_PRF_FRAME_INFO värde som pekar på information om stackramen.

Profileraren bör behandla detta som en täckande referens som kan skickas tillbaka till körningsmotorn i metoden ICorProfilerInfo2::GetFunctionInfo2 .

Kommentarer

Slutanropets målfunktion använder den aktuella stackramen och återgår direkt till anroparen för funktionen som gjorde slutanropet. Det innebär att en FunctionLeave2-motringning inte utfärdas för en funktion som är målet för ett slutanrop.

Värdet för parametern func är inte giltigt när FunctionTailcall2 funktionen returneras eftersom värdet kan ändras eller förstöras.

Funktionen FunctionTailcall2 är ett återanrop. Du måste implementera den. Implementeringen måste använda attributet __declspec(naked) storage-class.

Körningsmotorn sparar inga register innan den anropar den här funktionen.

  • Vid inmatning måste du spara alla register som du använder, inklusive de som finns i flyttalsenheten (FPU).

  • Vid avslut måste du återställa stacken genom att ta bort alla parametrar som push-överfördes av anroparen.

Implementeringen av FunctionTailcall2 bör inte blockera 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 eget skräpinsamlingsvänligt tillstånd. Om en skräpinsamling görs blockeras körningen tills FunctionTailcall2 den returneras.

FunctionTailcall2 Funktionen får inte heller 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: Tillgänglig sedan 2.0

Se även