Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 en geeft informatie over het stackframe.
Syntaxis
void __stdcall FunctionTailcall2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func
);
Parameters
funcId [in] De id van de momenteel uitgevoerde functie die op het punt staat een tail-aanroep te doen.
clientData [in] De opnieuw toegewezen functie-id, die de profiler eerder heeft opgegeven via FunctionIDMapper, van de momenteel uitgevoerde functie die op het punt staat een tail-aanroep te doen.
func [in] Een COR_PRF_FRAME_INFO waarde die verwijst naar informatie over het stackframe.
De profiler moet dit behandelen als een ondoorzichtige ingang die kan worden doorgestuurd naar de uitvoeringsengine in de methode ICorProfilerInfo2::GetFunctionInfo2 .
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 FunctionLeave2-callback wordt uitgegeven voor een functie die het doel is van een tail-aanroep.
De waarde van de func parameter is niet geldig nadat de FunctionTailcall2 functie is geretourneerd omdat de waarde kan worden gewijzigd of vernietigd.
De FunctionTailcall2 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 FunctionTailcall2 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 FunctionTailcall2 deze wordt geretourneerd.
FunctionTailcall2 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: beschikbaar sinds 2.0