Sdílet prostřednictvím


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 FunctionEnter2zpětná volání , FunctionLeave2a 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 pbHookFunctionsouboru . 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 clientDataFunctionEnter2FunctionLeave2, 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 FunctionEnter2zpětné volání , FunctionLeave2a 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

Viz také