FunctieLeave2, functie
De profiler meldt dat een functie op het punt staat terug te keren naar de aanroeper en geeft informatie over het stackframe en de retourwaarde van de functie.
Syntaxis
void __stdcall FunctionLeave2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_RANGE *retvalRange
);
Parameters
funcId
[in] De id van de functie die wordt geretourneerd.
clientData
[in] De opnieuw toegewezen functie-id, die de profiler eerder heeft opgegeven via de functie FunctionIDMapper .
func
[in] Een COR_PRF_FRAME_INFO
waarde die verwijst naar informatie over het stapelframe.
De profiler moet dit behandelen als een ondoorzichtige ingang die kan worden doorgestuurd naar de uitvoeringsengine in de methode ICorProfilerInfo2::GetFunctionInfo2 .
retvalRange
[in] Een aanwijzer naar een COR_PRF_FUNCTION_ARGUMENT_RANGE structuur die de geheugenlocatie van de retourwaarde van de functie aangeeft.
Voor toegang tot retourwaardegegevens moet de COR_PRF_ENABLE_FUNCTION_RETVAL
vlag worden ingesteld. De profiler kan de methode ICorProfilerInfo::SetEventMask gebruiken om de gebeurtenisvlagken in te stellen.
Opmerkingen
De waarden van de func
parameters en retvalRange
zijn niet geldig nadat de FunctionLeave2
functie is geretourneerd, omdat de waarden kunnen worden gewijzigd of vernietigd.
De FunctionLeave2
functie is een callback. U moet deze implementeren. De implementatie moet het __declspec
kenmerk (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 die in de drijvende-komma-eenheid (FPU).
Bij het afsluiten moet u de stack herstellen door alle parameters uit te schakelen die door de aanroeper zijn gepusht.
De implementatie van FunctionLeave2
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 FunctionLeave2
wordt geretourneerd.
FunctionLeave2
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