FunctionTailcall3WithInfo — Funkcja
Powiadamia profilera, że aktualnie wykonywana funkcja ma wykonać wywołanie końcowe do innej funkcji i udostępnia uchwyt, który można przekazać do metody ICorProfilerInfo3::GetFunctionTailcall3Info w celu pobrania ramki stosu.
Składnia
void __stdcall FunctionTailcall3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parametry
functionIDOrClientID
[in] Identyfikator aktualnie wykonywanej funkcji, która ma wykonać wywołanie końcowe.
eltInfo
[in] 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
FunctionTailcall3WithInfo
Metoda wywołania zwrotnego powiadamia profilera jako wywoływane funkcje i umożliwia profilerowi użycie metody ICorProfilerInfo3::GetFunctionTailcall3Info w celu sprawdzenia ramki stosu. Aby uzyskać dostęp do informacji o ramce stosu, należy ustawić flagę COR_PRF_ENABLE_FRAME_INFO
. Profiler może użyć metody ICorProfilerInfo::SetEventMask , aby ustawić flagi zdarzeń, a następnie użyć metody ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo , aby zarejestrować implementację tej funkcji.
Funkcja FunctionTailcall3WithInfo
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 rejestry w jednostce zmiennoprzecinkowe (FPU).
Po zakończeniu należy przywrócić stos przez wyskakujące okienko wszystkich parametrów, które zostały wypchnięte przez jego obiekt wywołujący.
Implementacja elementu FunctionTailcall3WithInfo
nie powinna blokować, ponieważ spowoduje to opóźnienie odzyskiwania pamięci. Implementacja nie powinna próbować odśmiecać pamięci, ponieważ stos może nie być w stanie przyjaznym dla odzyskiwania pamięci. Jeśli zostanie podjęta próba odzyskiwania pamięci, środowisko uruchomieniowe zostanie zablokowane do momentu FunctionTailcall3WithInfo
powrotu.
Ponadto funkcja FunctionTailcall3WithInfo 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 wersji 2.0