Dela via


FunctionIDMapper-funktion

Meddelar profileraren att den angivna identifieraren för en funktion kan mappas om till ett alternativt ID som ska användas i återanropen FunctionEnter2, FunctionLeave2 och FunctionTailcall2 för den funktionen. FunctionIDMapper gör det också möjligt för profileraren att ange om den vill ta emot återanrop för den funktionen.

Syntax

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

Parametrar

funcId [i] Funktionsidentifieraren som ska mappas om.

pbHookFunction [ut] En pekare till ett värde som profileraren anger till true om den vill ta emot FunctionEnter2, FunctionLeave2och FunctionTailcall2 återanrop. Annars anger den det här värdet till false.

Returvärde

Profileraren returnerar ett värde som körningsmotorn använder som en alternativ funktionsidentifierare. Returvärdet får inte vara null om det inte false returneras i pbHookFunction. Annars ger ett null-returvärde oförutsägbara resultat, inklusive eventuellt stopp av processen.

Kommentarer

Funktionen FunctionIDMapper är ett återanrop. Den implementeras av profileraren för att mappa om ett funktions-ID till någon annan identifierare som är mer användbar för profileraren. FunctionIDMapper Returnerar det alternativa ID som ska användas för en viss funktion. Körningsmotorn respekterar sedan profilerarens begäran genom att skicka det här alternativa ID:t, utöver det traditionella funktions-ID:t, tillbaka till profileraren i clientData parametern FunctionEnter2, FunctionLeave2och FunctionTailcall2 hooks, för att identifiera den funktion som kroken anropas för.

Du kan använda metoden ICorProfilerInfo::SetFunctionIDMapper för att ange implementeringen av FunctionIDMapper funktionen. Du kan bara anropa ICorProfilerInfo::SetFunctionIDMapper metoden en gång och vi rekommenderar att du gör det i ICorProfilerCallback::Initiera återanrop.

Som standard förutsätts det att en profilerare som anger flaggan COR_PRF_MONITOR_ENTERLEAVE med hjälp av ICorProfilerInfo::SetEventMask och som anger krokar via ICorProfilerInfo::SetEnterLeaveFunctionHooks eller ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, ska ta emot FunctionEnter2FunctionLeave2, och FunctionTailcall2 återanrop för varje funktion. Profilerare kan dock implementera FunctionIDMapper för att selektivt undvika att få dessa återanrop för vissa funktioner genom att ange pbHookFunction till false.

Profilerare bör vara toleranta mot fall där flera trådar i ett profilerat program anropar samma metod/funktion samtidigt. I sådana fall kan profileraren få flera FunctionIDMapper återanrop för samma FunctionID. Profileraren bör vara säker på att returnera samma värden från det här återanropet när det anropas flera gånger med samma FunctionID.

Krav

Plattformar: Se Systemkrav.

Huvudet: CorProf.idl

Bibliotek: CorGuids.lib

.NET Framework versioner: Tillgänglig sedan 1.0

Se även