FunctionLeave3WithInfo — Funkcja
Powiadamia profilera, że kontrolka jest zwracana z funkcji i udostępnia uchwyt, który można przekazać do metody ICorProfilerInfo3::GetFunctionLeave3Info w celu pobrania ramki stosu i wartości zwracanej.
Składnia
void __stdcall FunctionLeave3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parametry
functionIDOrClientID
[w] Identyfikator funkcji, z której zwracana jest kontrolka.
eltInfo
[w] Nieprzezroczysty uchwyt reprezentujący informacje o danej ramce stosu. Ten uchwyt jest prawidłowy tylko podczas wywołania zwrotnego, do którego jest przekazywany.
Uwagi
Metoda FunctionLeave3WithInfo
wywołania zwrotnego powiadamia profilera jako wywoływane funkcje i umożliwia profilerowi użycie metody ICorProfilerInfo3::GetFunctionLeave3Info w celu sprawdzenia wartości zwracanej. Aby uzyskać dostęp do informacji o wartości zwracanej, należy ustawić flagę COR_PRF_ENABLE_FUNCTION_RETVAL
. Profiler może użyć metody ICorProfilerInfo::SetEventMask , aby ustawić flagi zdarzeń, a następnie użyć metody ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo w celu zarejestrowania implementacji tej funkcji.
Funkcja FunctionLeave3WithInfo
jest wywołaniem zwrotnym. Należy ją zaimplementować. Implementacja musi używać atrybutu __declspec(naked)
klasy magazynu.
Aparat wykonywania nie zapisuje żadnych rejestrów przed wywołaniem tej funkcji.
Podczas wprowadzania należy zapisać wszystkie używane rejestry, w tym te w jednostce zmiennoprzecinkowej (FPU).
Po wyjściu należy przywrócić stos, wyskakując wszystkie parametry wypchnięte przez jego obiekt wywołujący.
Implementacja nie FunctionLeave3WithInfo
powinna blokować, ponieważ opóźni odzyskiwanie pamięci. Implementacja nie powinna próbować odzyskiwania pamięci, ponieważ stos może nie znajdować się w stanie przyjaznym dla odzyskiwania pamięci. Jeśli zostanie podjęta próba odzyskiwania pamięci, środowisko uruchomieniowe zostanie zablokowane do momentu FunctionLeave3WithInfo
powrotu.
Funkcja FunctionLeave3WithInfo
nie może wywołać kodu zarządzanego ani w żaden sposób spowodować alokację pamięci zarządzanej.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl
Biblioteki: CorGuids.lib
wersje .NET Framework: dostępne od 4