Megosztás a következőn keresztül:


FunctionTailcall2 függvény

Értesíti a profilozót arról, hogy a jelenleg végrehajtó függvény egy másik függvényre irányuló tail hívást készül végrehajtani, és információt nyújt a veremkeretről.

Szintaxis

void __stdcall FunctionTailcall2 (  
    [in] FunctionID         funcId,
    [in] UINT_PTR           clientData,
    [in] COR_PRF_FRAME_INFO func  
);  

Paraméterek

funcId [in] Annak a jelenleg végrehajtó függvénynek az azonosítója, amely a tail hívás indítására készül.

clientData [in] Az újraleképezett függvény azonosítója, amelyet a profilozó korábban a FunctionIDMapperen keresztül adott meg annak a jelenleg végrehajtó függvénynek, amely egy farokhívást fog végrehajtani.

func [in] Egy COR_PRF_FRAME_INFO érték, amely a veremkerettel kapcsolatos információkra mutat.

A profilkészítőnek ezt átlátszatlan leíróként kell kezelnie, amelyet vissza lehet adni a végrehajtó motornak az ICorProfilerInfo2::GetFunctionInfo2 metódusban.

Megjegyzések

A tail hívás célfüggvénye az aktuális veremkeretet használja, és közvetlenül a farokhívást kezdeményező függvény hívójának tér vissza. Ez azt jelenti, hogy a FüggvényLeave2 visszahívás nem lesz kiadva olyan függvényhez, amely a tail hívás célja.

A paraméter értéke érvénytelen a funcFunctionTailcall2 függvény visszaadása után, mert az érték megváltozhat vagy megsemmisülhet.

A FunctionTailcall2 függvény visszahívás; implementálnia kell. Az implementációnak a __declspec(naked) storage-class attribútumot kell használnia.

A végrehajtó motor nem ment regisztereket a függvény meghívása előtt.

  • A bejegyzéskor mentenie kell az összes használt regisztert, beleértve a lebegőpontos egységben (FPU) lévőket is.

  • Kilépéskor vissza kell állítania a vermet a hívó által leküldett összes paraméter kiugraásával.

A megvalósítása FunctionTailcall2 nem tilthatja le, mert késlelteti a szemétgyűjtést. Az implementáció nem kísérelhet meg szemétgyűjtést, mert előfordulhat, hogy a verem nem szemétgyűjtés-barát állapotban van. Szemétgyűjtési kísérlet esetén a futtatókörnyezet mindaddig blokkolva lesz, amíg vissza nem FunctionTailcall2 tér.

Emellett a FunctionTailcall2 függvény nem hívhat meg felügyelt kódot, és semmilyen módon nem okozhat felügyelt memóriafoglalást.

Követelmények

Platformok: Lásd: Rendszerkövetelmények.

Fejléc: CorProf.idl

Könyvtár: CorGuids.lib

.NET-keretrendszer verziók: 2.0 óta elérhető

Lásd még