Aracılığıyla paylaş


FunctionTailcall2 İşlevi

Şu anda yürütülen işlevin başka bir işleve kuyruk çağrısı yapmak üzere olduğunu profil oluşturucuya bildirir ve yığın çerçevesi hakkında bilgi sağlar.

Sözdizimi

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

Parametreler

funcId [in] Kuyruk çağrısı yapmak üzere olan yürütülmekte olan işlevin tanımlayıcısı.

clientData [in] Profil oluşturucunun daha önce FunctionIDMapper aracılığıyla belirttiği ve kuyruk çağrısı yapmak üzere olan şu anda yürütülmekte olan işlevin yeniden eşlenen işlev tanımlayıcısı.

func [in] COR_PRF_FRAME_INFO Yığın çerçevesi hakkındaki bilgilere işaret eden bir değer.

Profil oluşturucu bunu ICorProfilerInfo2::GetFunctionInfo2 yöntemindeki yürütme altyapısına geri geçirilebilen opak bir tanıtıcı olarak ele almalıdır.

Açıklamalar

Kuyruk çağrısının hedef işlevi geçerli yığın çerçevesini kullanır ve doğrudan kuyruk çağrısını yapan işlevin çağırana geri döner. Bu, bir kuyruk çağrısının hedefi olan bir işlev için FunctionLeave2 geri çağırmasının verilmeyeceği anlamına gelir.

değer func değişebileceğinden veya yok edilebileceğinden işlev döndürdüğünde parametrenin değeri geçerli FunctionTailcall2 değildir.

FunctionTailcall2 İşlev bir geri çağırmadır; bunu uygulamanız gerekir. Uygulamanın (naked) depolama sınıfı özniteliğini __declspeckullanması gerekir.

Yürütme altyapısı bu işlevi çağırmadan önce hiçbir kayıt kaydetmez.

  • Girişte, kayan nokta birimindeki (FPU) olanlar da dahil olmak üzere kullandığınız tüm yazmaçları kaydetmeniz gerekir.

  • Çıkışta, çağıranı tarafından gönderilen tüm parametreleri çıkararak yığını geri yüklemeniz gerekir.

uygulaması FunctionTailcall2 , çöp toplamayı geciktireceğinden engellememelidir. Yığın çöp toplamaya uygun bir durumda olmayabileceği için uygulama çöp toplama denememelidir. Bir çöp toplama denenirse, çalışma zamanı dönene kadar FunctionTailcall2 engeller.

Ayrıca, işlevin FunctionTailcall2 yönetilen koda çağrı yapılmaması veya herhangi bir şekilde yönetilen bellek ayırmaya neden olması gerekir.

Gereksinimler

Platform: Bkz. Sistem Gereksinimleri.

Üstbilgi: CorProf.idl

Kitaplığı: CorGuids.lib

.NET Framework Sürümleri: 2.0 sürümünden itibaren kullanılabilir

Ayrıca bkz.