FunctionIDMapper – funkce
Upozorní profiler, že daný identifikátor funkce může být přemapován na alternativní ID, které se použije ve zpětných voláních FunctionEnter2, FunctionLeave2 a FunctionTailcall2 pro danou funkci. FunctionIDMapper
umožňuje také profileru určit, jestli chce pro danou funkci přijímat zpětná volání.
Syntaxe
UINT_PTR __stdcall FunctionIDMapper (
[in] FunctionID funcId,
[out] BOOL *pbHookFunction
);
Parametry
funcId
[v] Identifikátor funkce, který se má přemapovat.
pbHookFunction
[out] Ukazatel na hodnotu, na true
kterou profiler nastaví, pokud chce přijímat FunctionEnter2
zpětná volání , FunctionLeave2
a FunctionTailcall2
. V opačném případě nastaví tuto hodnotu na false
.
Návratová hodnota
Profiler vrátí hodnotu, kterou spouštěcí modul používá jako alternativní identifikátor funkce. Vrácená hodnota nemůže být null, pokud false
není vrácena v pbHookFunction
souboru . V opačném případě bude vrácená hodnota null vést k nepředvídatelným výsledkům, včetně možného zastavení procesu.
Poznámky
Funkce FunctionIDMapper
je zpětné volání. Profiler ho implementuje k přemapování ID funkce na jiný identifikátor, který je pro profiler užitečnější. Vrátí FunctionIDMapper
alternativní ID, které se má použít pro libovolnou danou funkci. Spouštěcí modul pak vyhoví požadavku profileru předáním tohoto alternativního ID, kromě ID tradiční funkce, zpět profileru v parametru clientData
FunctionEnter2
FunctionLeave2
, a FunctionTailcall2
hooks, aby identifikoval funkci, pro kterou je hák volán.
Můžete použít ICorProfilerInfo::SetFunctionIDMapper metoda určit implementaci FunctionIDMapper
funkce. Metodu ICorProfilerInfo::SetFunctionIDMapper
můžete volat pouze jednou a doporučujeme, abyste to udělali ve zpětném volání ICorProfilerCallback::Initialize .
Ve výchozím nastavení se předpokládá, že profiler, který nastaví příznak COR_PRF_MONITOR_ENTERLEAVE pomocí ICorProfilerInfo::SetEventMask a který nastaví háky přes ICorProfilerInfo::SetEnterLeaveFunctionHooks nebo ICorProfilerInfo2::SetEnterLeaveFunctionHooks2, by měl přijímat FunctionEnter2
zpětné volání , FunctionLeave2
a FunctionTailcall2
pro každou funkci. Profilátory však mohou implementovat FunctionIDMapper
, aby se selektivně zabránily přijímání těchto zpětných volání pro určité funkce nastavením pbHookFunction
na false
.
Profilátory by měly být odolné vůči případům, kdy více vláken profilované aplikace volá stejnou metodu nebo funkci současně. V takových případech může profiler obdržet více FunctionIDMapper
zpětných volání pro stejnou FunctionID
. Profiler by měl mít jistotu, že vrátí stejné hodnoty z tohoto zpětného volání, pokud je volán vícekrát se stejným FunctionID
.
Požadavky
Platformy: Viz Požadavky na systém.
Záhlaví: CorProf.idl
Knihovny: CorGuids.lib
Verze rozhraní .NET Framework: K dispozici od verze 1.0