FunctionEnter2-Funktion
Aktualisiert: November 2007
Benachrichtigt den Profiler, dass das Steuerelement an eine Funktion übergeben wird, und stellt Informationen über den Stapelrahmen und Funktionsargumente bereit.
void FunctionEnter2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_INFO *argumentInfo
);
Parameter
funcId
[in] Der Bezeichner der Funktion, an die das Steuerelement übergeben wird.clientData
[in] Der neu zugeordnete Funktionsbezeichner, den der Profiler zuvor über der FunctionIDMapper-Funktion angegeben hat.func
[in] Ein COR_PRF_FRAME_INFO-Wert, der auf Informationen über den Stapelrahmen zeigt.Der Profiler sollte diesen Wert als nicht transparentes Handle behandeln, das in der ICorProfilerInfo2::GetFunctionInfo2-Methode an das Ausführungsmodul zurückgegeben werden kann.
argumentInfo
[in] Ein Zeiger auf eine COR_PRF_FUNCTION_ARGUMENT_INFO-Struktur, die die Speicherorte für die Argumente der Funktion angibt.Um auf Informationen über Argumente zuzugreifen, muss das COR_PRF_ENABLE_FUNCTION_ARGS-Flag festgelegt werden. Der Profiler kann die ICorProfilerInfo::SetEventMask-Methode verwenden, um die Ereignisflags festzulegen.
Hinweise
Die Werte des func-Parameters und des argumentInfo-Parameters sind nach der Rückkehr der FunctionEnter2-Funktion nicht gültig, da die Werte möglicherweise geändert oder zerstört wurden.
Die FunctionEnter2-Funktion ist ein Rückruf; Sie müssen sie implementieren. Die Implementierung muss das __declspec(naked)-Speicherklassenattribut verwenden.
Das Ausführungsmodul speichert vor dem Aufrufen dieser Funktion keine Register.
Beim Eintritt müssen Sie alle verwendeten Register speichern, auch die Register in der Gleitkommaeinheit (Floating-Point Unit, FPU).
Beim Beenden müssen Sie den Stapel wiederherstellen, indem Sie alle Parameter, die vom Aufrufer verschoben wurden, wieder abholen.
Die Implementierung von FunctionEnter2 sollte nicht blockieren, da dies die Garbage Collection verzögert. Die Implementierung sollte nicht versuchen, eine Garbage Collection durchzuführen, weil sich der Stapel möglicherweise nicht in einem für die Garbage Collection geeigneten Zustand befindet. Wenn eine Garbage Collection versucht wird, ist die Laufzeit blockiert, bis FunctionEnter2 zurückkehrt.
Außerdem darf die FunctionEnter2-Funktion keinen verwalteten Code aufrufen und keinen verwalteten Speicher reservieren.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: CorProf.idl
Bibliothek: CorGuids.lib
.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
Siehe auch
Referenz
ICorProfilerInfo2::SetEnterLeaveFunctionHooks2-Methode