Udostępnij za pośrednictwem


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 __declspecklasy 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

Zobacz też