Condividi tramite


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

Vedi anche