Funzione FunctionIDMapper
Notifica al profiler che l'identificatore specificato di una funzione può essere mappato a un ID alternativo da usare nei callback FunctionEnter2, FunctionLeave2 e FunctionTailcall2 per tale funzione. FunctionIDMapper
consente inoltre al profiler di indicare se vuole ricevere i callback per tale funzione.
Sintassi
UINT_PTR __stdcall FunctionIDMapper (
[in] FunctionID funcId,
[out] BOOL *pbHookFunction
);
Parametri
funcId
[in] Identificatore della funzione da rielaborare.
pbHookFunction
[out] Puntatore a un valore impostato true
dal profiler su se desidera ricevere FunctionEnter2
i callback , FunctionLeave2
e FunctionTailcall2
; in caso contrario, imposta questo valore su false
.
Valore restituito
Il profiler restituisce un valore che il motore di esecuzione usa come 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, inclusa la possibile interruzione del processo.
Commenti
La FunctionIDMapper
funzione è un callback. Viene implementato dal profiler per rieseguire il mapping di un ID funzione a un altro identificatore più utile per il profiler. Restituisce FunctionIDMapper
l'ID alternativo da utilizzare per qualsiasi funzione specificata. Il motore di esecuzione rispetta quindi la richiesta del profiler passando questo ID alternativo, oltre all'ID funzione tradizionale, al profiler nel clientData
parametro degli FunctionEnter2
hook , FunctionLeave2
e FunctionTailcall2
per identificare la funzione per cui viene chiamato l'hook.
È possibile usare il metodo ICorProfilerInfo::SetFunctionIDMapper per specificare l'implementazione della FunctionIDMapper
funzione. È possibile chiamare il ICorProfilerInfo::SetFunctionIDMapper
metodo una sola volta ed è consigliabile farlo nel callback ICorProfilerCallback::Initialize .
Per impostazione predefinita, si presuppone che un profiler che imposta il flag COR_PRF_MONITOR_ENTERLEAVE usando ICorProfilerInfo::SetEventMask e che imposta hook tramite ICorProfilerInfo::SetEnterLeaveFunctionHooks o ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, deve ricevere i FunctionEnter2
FunctionLeave2
callback , e FunctionTailcall2
per ogni funzione. Tuttavia, i profiler possono implementare FunctionIDMapper
per evitare selettivamente di ricevere questi callback per determinate funzioni impostando pbHookFunction
su false
.
I profiler devono essere tolleranti nei casi in cui più thread di un'applicazione profilata chiamano contemporaneamente lo stesso metodo/funzione. In questi casi, il profiler può ricevere più FunctionIDMapper
callback per lo stesso FunctionID
. Il profiler deve essere certo di restituire gli stessi valori da questo callback quando viene 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: Disponibile dalla versione 1.0