Delen via


FunctieTailcall, functie

Hiermee wordt aan de profiler gemeld dat de momenteel uitgevoerde functie op het punt staat een tail-aanroep naar een andere functie uit te voeren.

Notitie

De FunctionTailcall functie is afgeschaft in .NET Framework versie 2.0. Het blijft werken, maar er wordt een prestatieboete opgelegd. Gebruik in plaats daarvan de functie FunctionTailcall2 .

Syntaxis

void __stdcall FunctionTailcall (  
    [in] FunctionID funcID  
);  

Parameters

funcID [in] De id van de momenteel uitgevoerde functie die op het punt staat een tail-aanroep te doen.

Opmerkingen

De doelfunctie van de tail-aanroep gebruikt het huidige stackframe en keert rechtstreeks terug naar de aanroeper van de functie die de tail-aanroep heeft gedaan. Dit betekent dat er geen FunctionLeave-callback wordt uitgegeven voor een functie die het doel is van een tail-aanroep.

De FunctionTailcall functie is een callback. U moet deze implementeren. De implementatie moet het __declspeckenmerk (naked) storage-class gebruiken.

De uitvoeringsengine slaat geen registers op voordat deze functie wordt aangeroepen.

  • Bij invoer moet u alle registers opslaan die u gebruikt, inclusief de registers in de drijvende-kommaeenheid (FPU).

  • Bij het afsluiten moet u de stack herstellen door alle parameters uit te schakelen die door de aanroeper zijn gepusht.

De implementatie van FunctionTailcall mag niet worden geblokkeerd omdat dit de garbagecollection vertraagt. De implementatie mag geen garbagecollection uitvoeren, omdat de stack mogelijk niet geschikt is voor garbagecollection. Als een garbagecollection wordt geprobeerd, wordt de runtime geblokkeerd totdat FunctionTailcall deze wordt geretourneerd.

FunctionTailcall De functie mag ook geen beheerde code aanroepen en op geen enkele manier een toewijzing van beheerd geheugen veroorzaken.

Vereisten

Platforms: Zie Systeemvereisten.

Header: CorProf.idl

Bibliotheek: CorGuids.lib

.NET Framework versies: 1.1, 1.0

Zie ook