Condividi tramite


Funzione FunctionLeave2

Notifica al profiler che una funzione sta per ritornare al chiamante e fornisce informazioni sullo stack frame e sul valore restituito dalla funzione.

void __stdcall FunctionLeave2 (
    [in]  FunctionID                        funcId,
    [in]  UINT_PTR                          clientData,
    [in]  COR_PRF_FRAME_INFO                func,
    [in]  COR_PRF_FUNCTION_ARGUMENT_RANGE  *retvalRange
);

Parametri

  • funcId
    [in] Identificatore della funzione in corso di completamento.

  • clientData
    [in] Identificatore della funzione di cui è stato modificato il mapping, specificato in precedenza dal profiler tramite la funzione FunctionIDMapper.

  • func
    [in] Valore COR_PRF_FRAME_INFO che punta alle informazioni su uno stack frame.

    Il profiler dovrà considerarlo come handle opaco che può essere passato nuovamente al motore di esecuzione del metodo ICorProfilerInfo2::GetFunctionInfo2.

  • retvalRange
    [in] Puntatore a una struttura COR_PRF_FUNCTION_ARGUMENT_RANGE che specifica la posizione di memoria del valore restituito della funzione.

    Per accedere alle informazioni sul valore restituito, deve essere impostato il flag COR_PRF_ENABLE_FUNCTION_RETVAL. Il profiler può utilizzare il metodo ICorProfilerInfo::SetEventMask per impostare i flag dell'evento.

Note

I valori dei parametri func e retvalRange non sono validi dopo il completamento della funzione FunctionLeave2 in quanto è possibile che vengano modificati o eliminati.

La funzione FunctionLeave2 è un callback e deve essere implementata. L'implementazione deve utilizzare l'attributo del classe di archiviazione __declspec(naked).

Il motore di esecuzione non salva alcun registro prima di chiamare la funzione.

  • In ingresso, è necessario salvare tutti i registri che si utilizzano, incluso quelli dell'unità a virgola mobile (FPU).

  • In uscita, è necessario ripristinare lo stack recuperando tutti i parametri inseriti dal chiamante.

L'implementazione della funzione FunctionLeave2 non deve bloccarsi perché ritarderà il Garbage Collection. L'implementazione non deve tentare una Garbage Collection perché lo stack potrebbe non trovarsi in uno stato favorevole per tale operazione. Se viene tentato un Garbage Collection, il runtime si bloccherà fino al completamento della funzione FunctionLeave2.

Inoltre, la funzione FunctionLeave2 non deve effettuare una chiamata nel codice gestito o causare in alcun modo un'allocazione della memoria gestita.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorProf.idl

Libreria: CorGuids.lib

Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vedere anche

Riferimenti

Funzione FunctionEnter2

Funzione FunctionTailcall2

Metodo ICorProfilerInfo2::SetEnterLeaveFunctionHooks2

Altre risorse

Funzioni statiche globali di profilatura

Cronologia delle modifiche

Data

Cronologia

Motivo

Ottobre 2010

__stdcall è stato aggiunto alla sintassi.

Commenti e suggerimenti dei clienti.