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 FunctionEnter2i callback , FunctionLeave2e 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 FunctionEnter2hook , FunctionLeave2e 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 FunctionEnter2FunctionLeave2callback , 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

Vedi anche