Condividi tramite


Funzione FunctionLeave3WithInfo

Notifica al profiler che il controllo viene restituito da una funzione e fornisce un handle che può essere passato al metodo ICorProfilerInfo3::GetFunctionLeave3Info per recuperare lo stack frame e il valore restituito.

Sintassi

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

Parametri

functionIDOrClientID [in] Identificatore della funzione da cui viene restituito il controllo.

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 FunctionLeave3WithInfo metodo di callback notifica al profiler come funzioni viene chiamato e consente al profiler di usare il metodo ICorProfilerInfo3::GetFunctionLeave3Info per esaminare il valore restituito. Per accedere alle informazioni sul valore restituito, è necessario impostare il COR_PRF_ENABLE_FUNCTION_RETVAL 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 FunctionLeave3WithInfo 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 FunctionLeave3WithInfo 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 FunctionLeave3WithInfo quando non viene restituito.

La FunctionLeave3WithInfo funzione 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 da 4

Vedi anche