FunctionLeave2- funktion
Meddelar profileraren att en funktion är på väg att återgå till anroparen och ger information om stackramen och funktionens returvärde.
Syntax
void __stdcall FunctionLeave2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_RANGE *retvalRange
);
Parametrar
funcId
[in] Identifieraren för funktionen som returneras.
clientData
[in] Den ommappade funktionsidentifieraren, som profileraren tidigare angav via funktionen FunctionIDMapper .
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 .
retvalRange
[in] En pekare till en COR_PRF_FUNCTION_ARGUMENT_RANGE struktur som anger minnesplatsen för funktionens returvärde.
För att få åtkomst till returvärdesinformation måste COR_PRF_ENABLE_FUNCTION_RETVAL
flaggan anges. Profileraren kan använda metoden ICorProfilerInfo::SetEventMask för att ange händelseflaggor.
Kommentarer
Värdena för parametrarna func
och retvalRange
är inte giltiga när FunctionLeave2
funktionen returneras eftersom värdena kan ändras eller förstöras.
Funktionen FunctionLeave2
ä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 FunctionLeave2
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 FunctionLeave2
den returneras.
FunctionLeave2
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