Freigeben über


FunctionTailcall3-Funktion

Benachrichtigt den Profiler, dass die derzeit ausgeführte Funktion einen Endaufruf an eine andere Funktion durchführt.

Syntax

void __stdcall FunctionTailcall3 (FunctionOrRemappedID functionOrRemappedID);  

Parameter

functionOrRemappedID [in] Der Bezeichner der derzeit ausgeführten Funktion, die einen Endaufruf ausführen soll.

Bemerkungen

Die FunctionTailcall3-Rückruffunktion benachrichtigt den Profiler, wenn Funktionen aufgerufen werden. Verwenden Sie die ICorProfilerInfo3::SetEnterLeaveFunctionHooks3-Methode, um Ihre Implementierung dieser Funktion zu registrieren.

Die FunctionTailcall3-Funktion ist ein Rückruf. Sie müssen sie implementieren. Die Implementierung muss das Speicherklassenattribut __declspec(naked) verwenden.

Die Ausführungs-Engine speichert keine Register, bevor diese Funktion aufgerufen wird.

  • Bei der Eingabe müssen Sie alle Register speichern, die Sie verwenden, einschließlich der Register in der Gleitkommaeinheit (Floating-Point Unit, FPU).

  • Beim Beenden müssen Sie den Stapel wiederherstellen, indem Sie alle Parameter deaktivieren, die vom Aufrufer gepusht wurden.

Die Implementierung von FunctionTailcall3 darf nicht blockieren, da dadurch die Garbage Collection verzögert wird. Die Implementierung darf keine Garbage Collection versuchen, da sich der Stapel möglicherweise nicht in einem für eine Garbage Collection geeigneten Zustand befindet. Wenn eine Garbage Collection versucht wird, blockiert die Runtime, bis FunctionTailcall3 zurückgegeben wird.

Die FunctionTailcall3-Funktion darf keinen verwalteten Code aufrufen oder in irgendeiner Weise eine verwaltete Arbeitsspeicherzuteilung verursachen.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl

Bibliothek: CorGuids.lib

.NET Framework-Versionen: seit Version 4 verfügbar

Weitere Informationen