Condividi tramite


Funzione FunctionIDMapper

Notifica al profiler che l'identificatore specificato di una funzione può essere rimappato a un ID alternativo da utilizzare nei callback FunctionEnter2, FunctionLeave2 e FunctionTailcall2 di tale funzione. FunctionIDMapperconsente inoltre al profiler di indicare se ricevere i callback per tale funzione.

UINT_PTR __stdcall FunctionIDMapper (
    [in]  FunctionID  funcId, 
    [out] BOOL       *pbHookFunction
);

Parametri

  • funcId
    [in] L'identificatore della funzione da rimappare.

  • pbHookFunction
    [out] Puntatore a un valore che il profiler imposta su true se vuole ricevere i callback FunctionEnter2, FunctionLeave2 e FunctionTailcall2. In caso contrario, il profiler imposta questo valore su false.

Valore restituito

Il profiler restituisce un valore che il motore di esecuzione utilizza come un identificatore alternativo della funzione. Il valore restituito non può essere null a meno che non sia restituito false in pbHookFunction. In caso contrario, un valore restituito null produrrà risultati imprevedibili, compresa la possibilità di un arresto del processo.

Note

La funzione FunctionIDMapper è un callback. È implementata dal profiler per rimappare un ID funzione a un altro identificatore che sia più utile per il profiler. FunctionIDMapper restituisce l’ID alternativo da utilizzare per qualsiasi funzione specificata. Il motore di esecuzione rispetta quindi la richiesta del profiler ripassando tale ID alternativo, oltre all’ID funzione tradizionale, al profiler nel parametro clientData degli hook FunctionEnter2, FunctionLeave2 e FunctionTailcall2, per identificare la funzione per cui verrà chiamato l'hook.

È possibile utilizzare il metodo ICorProfilerInfo::SetFunctionIDMapper per specificare l'implementazione della funzione FunctionIDMapper. È possibile chiamare il metodo ICorProfilerInfo::SetFunctionIDMapper solo una volta e si consiglia di eseguire questa operazione nel callback ICorProfilerCallback::Initialize.

Per impostazione predefinita, si presume che un profiler che imposta il flag COR_PRF_MONITOR_ENTERLEAVE tramite ICorProfilerInfo::SetEventMask e gli hook tramite ICorProfilerInfo::SetEnterLeaveFunctionHooks o ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, debba ricevere i callback FunctionEnter2, FunctionLeave2 e FunctionTailcall2 per ogni funzione. Tuttavia, i profiler possono implementare FunctionIDMapper per evitare in modo selettivo la ricezione di tali callback per determinate funzioni, impostando pbHookFunction su false.

I profiler devono poter supportare i casi in cui più thread di un'applicazione sottoposta ad analisi chiamano lo stesso metodo o la stessa funzione contemporaneamente. In tali casi, il profiler può ricevere più callback FunctionIDMapper per lo stesso FunctionID. Il profiler deve essere sicuro di restituire gli stessi valori da tale callback quando è chiamato più volte con lo stesso FunctionID.

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, 1.1, 1.0

Vedere anche

Riferimenti

Metodo ICorProfilerInfo::SetFunctionIDMapper

Funzione FunctionIDMapper2

Funzione FunctionEnter2

Funzione FunctionLeave2

Funzione FunctionTailcall2

Altre risorse

Funzioni statiche globali di profilatura