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
, FunctionLeave2
och 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
, FunctionLeave2
och 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 FunctionEnter2
FunctionLeave2
, 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