Funzione FunctionEnter2

Notifica al profiler che il controllo viene passato a una funzione e fornisce informazioni sugli argomenti di frame e funzione dello stack. Questa funzione sostituisce la funzione FunctionEnter .

Sintassi

void __stdcall FunctionEnter2 (  
    [in]  FunctionID                       funcId,
    [in]  UINT_PTR                         clientData,
    [in]  COR_PRF_FRAME_INFO               func,
    [in]  COR_PRF_FUNCTION_ARGUMENT_INFO  *argumentInfo  
);  

Parametri

funcId [in] Identificatore della funzione a cui viene passato il controllo.

clientData [in] Identificatore di funzione remapped, specificato in precedenza dal profiler usando 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 .

argumentInfo [in] Puntatore a una struttura COR_PRF_FUNCTION_ARGUMENT_INFO che specifica le posizioni in memoria degli argomenti della funzione.

Per accedere alle informazioni sugli argomenti, il COR_PRF_ENABLE_FUNCTION_ARGS flag deve essere impostato. Il profiler può usare il metodo ICorProfilerInfo::SetEventMask per impostare i flag di evento.

Commenti

I valori dei func parametri e argumentInfo non sono validi dopo che la FunctionEnter2 funzione restituisce perché i valori possono essere modificati o eliminati.

La FunctionEnter2 funzione è un callback. È necessario implementarla. L'implementazione deve usare l'attributo __declspecdella 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 FunctionEnter2 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 FunctionEnter2 .

Inoltre, la FunctionEnter2 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

Vedi anche