FunctionTailcall3WithInfo-Funktion
Benachrichtigt den Profiler, dass die derzeit ausgeführte Funktion einen Endaufruf an eine andere Funktion durchführt, und stellt einen Handle bereit, der an die ICorProfilerInfo3::GetFunctionTailcall3Info-Methode übergeben werden kann, um den Stapelrahmen abzurufen.
Syntax
void __stdcall FunctionTailcall3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parameter
functionIDOrClientID
[in] Der Bezeichner der derzeit ausgeführten Funktion, die einen Endaufruf ausführen soll.
eltInfo
[in] Ein nicht transparenter Handle, der Informationen über einen bestimmten Stapelrahmen entspricht. Dieser Handle ist nur gültig während des Rückrufs, an den er übergeben wird.
Bemerkungen
Die Rückrufmethode FunctionTailcall3WithInfo
benachrichtigt den Profiler, wenn Funktionen aufgerufen werden, und ermöglicht ihm, die ICorProfilerInfo3::GetFunctionTailcall3Info-Methode zum Überprüfen des Stapelrahmens zu verwenden. Um auf Stapelrahmeninformationen zugreifen zu können, muss das COR_PRF_ENABLE_FRAME_INFO
-Flag festgelegt werden. Der Profiler kann die ICorProfilerInfo::SetEventMask-Methode verwenden, um die Ereignisflags festzulegen, und dann die ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo-Methode verwenden, um Ihre Implementierung dieser Funktion zu registrieren.
Die FunctionTailcall3WithInfo
-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.
Beim Eintrag 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 FunctionTailcall3WithInfo
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 FunctionTailcall3WithInfo
zurückgegeben wird.
Die FunctionTailcall3WithInfo-Funktion darf außerdem 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 2.0 verfügbar.