FunctionEnter2 — Funkcja
Powiadamia profilera, że kontrolka jest przekazywana do funkcji i dostarcza informacje o ramce stosu i argumentach funkcji. Ta funkcja zastępuje funkcję FunctionEnter .
Składnia
void __stdcall FunctionEnter2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_INFO *argumentInfo
);
Parametry
funcId
[w] Identyfikator funkcji, do której jest przekazywana kontrolka.
clientData
[w] Ponownie zamapowany identyfikator funkcji, który profiler wcześniej określony przy użyciu funkcji FunctionIDMapper .
func
[w] Wartość wskazująca COR_PRF_FRAME_INFO
informacje o ramce stosu.
Profiler powinien traktować to jako nieprzezroczysty uchwyt, który można przekazać z powrotem do aparatu wykonywania w metodzie ICorProfilerInfo2::GetFunctionInfo2 .
argumentInfo
[w] Wskaźnik do struktury COR_PRF_FUNCTION_ARGUMENT_INFO , która określa lokalizacje w pamięci argumentów funkcji.
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ń.
Uwagi
Wartości parametrów func
i argumentInfo
są nieprawidłowe po FunctionEnter2
powrocie funkcji, ponieważ wartości mogą ulec zmianie lub zostaną zniszczone.
Funkcja FunctionEnter2
jest wywołaniem zwrotnym. Należy ją zaimplementować. Implementacja musi używać atrybutu __declspec
klasy magazynu (naked
).
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 powinna blokować, FunctionEnter2
ponieważ opóźni odzyskiwanie pamięci. Implementacja nie powinna próbować odzyskiwania 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 FunctionEnter2
powrotu.
FunctionEnter2
Ponadto funkcja nie może wywoływać kodu zarządzanego ani w żaden sposób powodować alokację pamięci zarządzanej.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl
Biblioteki: CorGuids.lib
.NET Framework wersje: dostępne od wersji 2.0