Funzione FunctionLeave2
Notifica al profiler che una funzione sta per tornare al chiamante e fornisce informazioni sul valore restituito dello stack frame e della funzione.
Sintassi
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 restituita.
clientData
[in] Identificatore di funzione remapped, specificato in precedenza dal profiler tramite la funzione FunctionIDMapper .
func
[in] Valore COR_PRF_FRAME_INFO
che punta alle informazioni sul frame dello stack.
Il profiler deve trattarlo come handle opaco che può essere passato al motore di esecuzione nel 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, è necessario impostare il COR_PRF_ENABLE_FUNCTION_RETVAL
flag. Il profiler può usare il metodo ICorProfilerInfo::SetEventMask per impostare i flag di evento.
Commenti
I valori dei func
parametri e retvalRange
non sono validi dopo che la FunctionLeave2
funzione restituisce perché i valori possono essere modificati o eliminati.
La FunctionLeave2
funzione è un callback. È necessario implementarla. L'implementazione deve usare l'attributo __declspec
della classe di archiviazione (naked
).
Il motore di esecuzione non salva i registri prima di chiamare questa funzione.
Nella voce è necessario salvare tutti i registri usati, inclusi quelli nell'unità a virgola mobile (FPU).
All'uscita, è necessario ripristinare lo stack rimuovendo tutti i parametri che sono stati sottoposti a push dal chiamante.
L'implementazione di FunctionLeave2
non deve essere bloccata perché ritarderà la Garbage Collection. L'implementazione non deve tentare una Garbage Collection perché lo stack potrebbe non essere in uno stato descrittivo di Garbage Collection. Se viene eseguito un tentativo di Garbage Collection, il runtime blocca fino a quando non viene restituito FunctionLeave2
.
Inoltre, la FunctionLeave2
funzione non deve chiamare nel codice gestito o in alcun modo causare un'allocazione di memoria gestita.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorProf.idl
Libreria: CorGuids.lib
Versioni di .NET Framework: Disponibile da 2.0