Funzione FunctionTailcall3WithInfo
Notifica al profiler che la funzione attualmente in esecuzione sta per eseguire una chiamata di coda a un'altra funzione e fornisce un handle che può essere passato al metodo ICorProfilerInfo3::GetFunctionTailcall3Info per recuperare lo stack frame.
Sintassi
void __stdcall FunctionTailcall3WithInfo(
[in] FunctionIDOrClientID functionIDOrClientID,
[in] COR_PRF_ELT_INFO eltInfo);
Parametri
functionIDOrClientID
[in] Identificatore della funzione attualmente in esecuzione che sta per effettuare una chiamata alla coda.
eltInfo
[in] Handle opaco che rappresenta informazioni su un determinato stack frame. Questo handle è valido solo durante il callback a cui viene passato.
Commenti
Il FunctionTailcall3WithInfo
metodo di callback notifica al profiler come funzioni vengono chiamate e consente al profiler di usare il metodo ICorProfilerInfo3::GetFunctionTailcall3Info per esaminare lo stack frame. Per accedere alle informazioni sullo stack frame, è necessario impostare il COR_PRF_ENABLE_FRAME_INFO
flag. Il profiler può usare il metodo ICorProfilerInfo::SetEventMask per impostare i flag di evento e quindi usare il metodo ICorProfilerInfo3::SetEnterLeaveFunctionHooks3WithInfo per registrare l'implementazione di questa funzione.
La FunctionTailcall3WithInfo
funzione è un callback. È necessario implementarla. L'implementazione deve usare l'attributo __declspec(naked)
della classe di archiviazione.
Il motore di esecuzione non salva alcun registro prima di chiamare questa funzione.
Nella voce è necessario salvare tutti i registri usati, inclusi quelli nell'unità a virgola mobile .On entry, you must save all registers that you use, including those in the floating-point unit (FPU).
All'uscita, è necessario ripristinare lo stack rimuovendo tutti i parametri di cui è stato eseguito il push dal chiamante.
L'implementazione di FunctionTailcall3WithInfo
non deve essere bloccata perché ritarderà l'operazione di Garbage Collection. L'implementazione non deve tentare un'operazione di Garbage Collection, perché lo stack potrebbe non trovarsi in uno stato descrittivo di Garbage Collection. Se si tenta di eseguire un'operazione di Garbage Collection, il runtime verrà bloccato fino a FunctionTailcall3WithInfo
quando non viene restituito.
Inoltre, la funzione FunctionTailcall3WithInfo non deve chiamare nel codice gestito o causare un'allocazione di memoria gestita in alcun modo.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorProf.idl
Libreria: CorGuids.lib
Versioni di .NET Framework: Disponibile dalla versione 2.0