Udostępnij za pośrednictwem


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

Zobacz też