Udostępnij za pośrednictwem


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

Zobacz też