Dela via


FunctionEnter2-funktion

Meddelar profileraren att kontrollen skickas till en funktion och ger information om stackramen och funktionsargumenten. Den här funktionen ersätter funktionen FunctionEnter .

Syntax

void __stdcall FunctionEnter2 (  
    [in]  FunctionID                       funcId,
    [in]  UINT_PTR                         clientData,
    [in]  COR_PRF_FRAME_INFO               func,
    [in]  COR_PRF_FUNCTION_ARGUMENT_INFO  *argumentInfo  
);  

Parametrar

funcId [i] Identifieraren för den funktion som kontrollen skickas till.

clientData [i] Den ommappade funktionsidentifieraren, som profileraren tidigare angav med funktionen FunctionIDMapper .

func [i] Ett COR_PRF_FRAME_INFO värde som pekar på information om stackramen.

Profileraren bör behandla detta som ett täckande handtag som kan skickas tillbaka till körningsmotorn i metoden ICorProfilerInfo2::GetFunctionInfo2 .

argumentInfo [i] En pekare till en COR_PRF_FUNCTION_ARGUMENT_INFO struktur som anger platserna i minnet för funktionens argument.

För att få åtkomst till argumentinformation måste COR_PRF_ENABLE_FUNCTION_ARGS flaggan anges. Profileraren kan använda metoden ICorProfilerInfo::SetEventMask för att ange händelseflaggor.

Kommentarer

Värdena för parametrarna func och argumentInfo är inte giltiga när FunctionEnter2 funktionen returneras eftersom värdena kan ändras eller förstöras.

Funktionen FunctionEnter2 är en motringning. Du måste implementera den. Implementeringen måste använda attributet __declspec(naked) storage-class.

Körningsmotorn sparar inga register innan den här funktionen anropas.

  • Vid inmatningen måste du spara alla register som du använder, inklusive de i flyttalsenheten (FPU).

  • När du avslutar måste du återställa stacken genom att ta bort alla parametrar som push-överfördes av anroparen.

Implementeringen av FunctionEnter2 bör inte blockeras 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 skräpinsamlingsvänligt tillstånd. Om en skräpinsamling görs blockeras körningen tills FunctionEnter2 den returneras.

FunctionEnter2 Dessutom får funktionen inte 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