Delen via


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 ontvangenFunctionEnter2FunctionLeave2; 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, FunctionLeave2en 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 FunctionEnter2callbacks , FunctionLeave2en 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

Zie ook