Share via


FunctionLeave3WithInfo-Funktion

Informiert den Profiler darüber, dass die Steuerung von einer Funktion zurückgegeben wird, und stellt ein Handle bereit, das an die ICorProfilerInfo3::GetFunctionLeave3Info-Methode übergeben werden kann, um den Stapelrahmen und den Rückgabewert abzurufen.

Syntax

void __stdcall FunctionLeave3WithInfo(  
               [in] FunctionIDOrClientID functionIDOrClientID,  
               [in] COR_PRF_ELT_INFO eltInfo);  

Parameter

functionIDOrClientID [in] Der Bezeichner der Funktion, von der die Steuerung zurückgegeben wird.

eltInfo [in] Ein nicht transparentes Handle, das Informationen zu einem bestimmten Stapelrahmen darstellt. Dieses Handle ist nur gültig während des Rückrufs, an den es übergeben wird.

Bemerkungen

Die FunctionLeave3WithInfo-Rückrufmethode benachrichtigt den Profiler, wenn Funktionen aufgerufen werden, und ermöglicht dem Profiler die Überprüfung des Rückgabewerts mithilfe der ICorProfilerInfo3::GetFunctionLeave3Info-Methode. Um auf Rückgabewertinformationen zugreifen zu können, muss das COR_PRF_ENABLE_FUNCTION_RETVAL-Flag festgelegt werden. Der Profiler kann mithilfe der ICorProfilerInfo::SetEventMask-Methode die Ereignisflags festlegen und dann die ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo-Methode verwenden, um Ihre Implementierung dieser Funktion zu registrieren.

Die FunctionLeave3WithInfo-Funktion ist ein Rückruf und muss von Ihnen implementiert werden. Die Implementierung muss das __declspec(naked)-Speicherklassenattribut verwenden.

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

  • Beim Start müssen alle von Ihnen verwendeten Register gespeichert werden, einschließlich der Register in der Gleitkommaeinheit (Floating-Point Unit, FPU).

  • Beim Beenden muss der Stapel wiederhergestellt werden. Deaktivieren Sie dazu alle Parameter, die vom Aufrufer gepusht wurden.

Die Implementierung von FunctionLeave3WithInfo darf nicht blockieren, da dadurch die Garbage Collection verzögert wird. Die Implementierung darf keine Garbage Collection durchführen, da sich der Stapel möglicherweise nicht in einem für eine Garbage Collection geeigneten Zustand befindet. Wenn eine Garbage Collection durchgeführt wird, wird die Runtime blockiert, bis FunctionLeave3WithInfo abgeschlossen ist.

Die FunctionLeave3WithInfo-Funktion darf keinen verwalteten Code aufrufen oder in irgendeiner Weise eine Zuteilung von verwaltetem Arbeitsspeicher verursachen.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl

Bibliothek: CorGuids.lib

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

Siehe auch