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