Dela via


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

Se även