FunctieIDMapper, functie
Hiermee wordt de profiler gewaarschuwd dat de opgegeven id van een functie opnieuw kan worden toegewezen aan een alternatieve id die moet worden gebruikt in de callbacks FunctionEnter2, FunctionLeave2 en FunctionTailcall2 voor die functie. FunctionIDMapper
Stelt de profiler ook in staat om aan te geven of deze callbacks voor die functie wil ontvangen.
Syntaxis
UINT_PTR __stdcall FunctionIDMapper (
[in] FunctionID funcId,
[out] BOOL *pbHookFunction
);
Parameters
funcId
[in] De functie-id die opnieuw moet worden toegewezen.
pbHookFunction
[uit] Een aanwijzer naar een waarde waarop de profiler is ingesteld true
als deze callbacks , en FunctionTailcall2
wil ontvangenFunctionEnter2
FunctionLeave2
; anders wordt deze waarde ingesteld op false
.
Retourwaarde
De profiler retourneert een waarde die door de uitvoeringsengine wordt gebruikt als een alternatieve functie-id. De geretourneerde waarde kan alleen null zijn als false
wordt geretourneerd in pbHookFunction
. Anders levert een null-retourwaarde onvoorspelbare resultaten op, waaronder het mogelijk stoppen van het proces.
Opmerkingen
De FunctionIDMapper
functie is een callback. Het wordt geïmplementeerd door de profiler om een functie-id opnieuw toe te kennen aan een andere id die nuttiger is voor de profiler. De FunctionIDMapper
retourneert de alternatieve id die moet worden gebruikt voor een bepaalde functie. De uitvoeringsengine honoreert vervolgens de aanvraag van de profiler door deze alternatieve id, naast de traditionele functie-id, door te geven aan de profiler in de clientData
parameter van de FunctionEnter2
, FunctionLeave2
en FunctionTailcall2
hooks, om de functie te identificeren waarvoor de hook wordt aangeroepen.
U kunt de methode ICorProfilerInfo::SetFunctionIDMapper gebruiken om de implementatie van de FunctionIDMapper
functie op te geven. U kunt de ICorProfilerInfo::SetFunctionIDMapper
methode slechts eenmaal aanroepen en we raden u aan dit te doen in de callback ICorProfilerCallback::Initialize .
Standaard wordt ervan uitgegaan dat een profiler die de vlag COR_PRF_MONITOR_ENTERLEAVE instelt met behulp van ICorProfilerInfo::SetEventMask en die hooks instelt via ICorProfilerInfo::SetEnterLeaveFunctionHooks of ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, voor elke functie de FunctionEnter2
callbacks , FunctionLeave2
en FunctionTailcall2
ontvangt. Profilers kunnen echter implementeren FunctionIDMapper
om selectief te voorkomen dat deze callbacks voor bepaalde functies worden ontvangen door in te stellen pbHookFunction
op false
.
Profilers moeten tolerant zijn voor gevallen waarin meerdere threads van een geprofileerde toepassing dezelfde methode/functie tegelijkertijd aanroepen. In dergelijke gevallen kan de profiler meerdere FunctionIDMapper
callbacks ontvangen voor dezelfde FunctionID
. De profiler moet er zeker van zijn dat deze dezelfde waarden van deze callback retourneert wanneer deze meerdere keren wordt aangeroepen met dezelfde FunctionID
.
Vereisten
Platforms: Zie Systeemvereisten.
Header: CorProf.idl
Bibliotheek: CorGuids.lib
.NET Framework versies: beschikbaar sinds 1.0