FunctionEnter3WithInfo — Funkcja
Powiadamia profilera, że kontrolka jest przekazywana do funkcji i udostępnia dojście, które można przekazać do metody ICorProfilerInfo3::GetFunctionEnter3Info w celu pobrania ramki stosu i argumentów funkcji.
Składnia
void __stdcall FunctionEnter3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parametry
functionIDOrClientID
[in] Identyfikator funkcji, do której przekazano kontrolkę.
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
FunctionEnter3WithInfo
Metoda wywołania zwrotnego powiadamia profilera jako wywoływane funkcje i umożliwia profilerowi użycie metody ICorProfilerInfo3::GetFunctionEnter3Info w celu sprawdzenia wartości argumentów. Aby uzyskać dostęp do informacji o argumentach, należy ustawić flagę COR_PRF_ENABLE_FUNCTION_ARGS
. 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 FunctionEnter3WithInfo
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 FunctionEnter3WithInfo
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 FunctionEnter3WithInfo
powrotu.
Funkcja FunctionEnter3WithInfo
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