Aracılığıyla paylaş


Zincirleme Bırakma Bilgi Yapıları

UNW_FLAG_CHAININFO bayrağı ayarlı ise, sonra bir açılımı bilgi ikincil bir yapıdır ve paylaşılan özel durum işleyici/zincirleme-bilgileri adres alanı birincil açılım bilgileri içerir.Aşağıdaki kod unwindInfo öğesinin UNW_FLAG_CHAININFO bayrağına sahip olan yapı olduğunu varsayarak birincil bırakma bilgisi alır.

PRUNTIME_FUNCTION primaryUwindInfo = (PRUNTIME_FUNCTION)&(unwindInfo->UnwindCode[( unwindInfo->CountOfCodes + 1 ) & ~1]);

Zincirleme bilgi iki durumda yararlıdır.Önce, bitişik olmayan kod kesimleri için kullanılabilir.Zincirleme bilgi kullanarak gereken açılım bilgisinin boyutunu azaltabilirsiniz, çünkü birincil açılım bilgisinden açılım kodları dizisini kopyalamanıza gerek olmaz.

Ayrıca, geçici kayıtları gruplamak için zincirleme bilgileri kullanabilirsiniz.İşlev girdisi girişinin dışına çıkana kadar derleyici bazı geçici kayıtları geciktirebilir.Gruplandırılmış koddan önce işlevin bölümü için birincil bırakma bilgisi edinerek ve ardından zincirleme bilgideki bırakma kodlarının kalıcı yazmaçlara yönelik kayıtları yansıttığı sıfır olmayan giriş boyutuna sahip zincirleme bilgi ayarlayarak bunu kaydedebilirsiniz.Bu durumda, bırakma kodlarının tümü UWOP_SAVE_NONVOL örnekleridir.push kullanarak kalıcı yazmaçları kaydeden veya ek sabit yığın ayırma kullanarak rsp kaydı değiştiren bir gruplandırma desteklenmiyor.

UNW_FLAG_CHAININFO kümesi bulunan UNWIND_INFO öğesi, UNWIND_INFO öğesi UNW_FLAG_CHAININFO kümesine sahip (birden çok daraltma-kaydırma) bir RUNTIME_FUNCTION girdisini içerebilir.Sonunda, zincirlenmiş bırakma bilgisi işaretçileri UNW_FLAG_CHAININFO temizlenmiş olan, UNWIND_INFO öğesi olarak gelir; bu geçerli yordam giriş noktasını işaret eden ilk UNWIND_INFO öğesidir.

Ayrıca bkz.

Başvuru

Özel Durum İşleme için Bırakma Verisi, Hata Ayıklayıcı Desteği