Aracılığıyla paylaş


Dile Özel İşleyici

UNW_FLAG_EHANDLER veya UNW_FLAG_UHANDLER bayrakları ayarlandığında dile özel işleyicinin ilgili adresi UNWIND_INFO öğesinde mevcuttur.Önceki bölümde de açıklandığı gibi, dile özel işleyici bir özel durum işleyici aramasının parçası olarak ya da bir açılımın parçası olarak çağrılır.Aşağıdaki prototipe sahiptir:

typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) (
    IN PEXCEPTION_RECORD ExceptionRecord,
    IN ULONG64 EstablisherFrame,
    IN OUT PCONTEXT ContextRecord,
    IN OUT PDISPATCHER_CONTEXT DispatcherContext
);

ExceptionRecord standart Win64 tanımını içeren bir özel durum kaydı için bir işaretçi sağlar.

EstablisherFrame bu işlev için sabit yığın ayrımının temelinin adresidir.

ContextRecord özel durum ortaya çıktığında özel durum bağlamını (özel durum işleyici durumu içerisinde) veya geçerli "bırakma" bağlamını (sonlandırma işleyici durumu içerisinde) işaret eder.

DispatcherContext bu işlev için dağıtıcı bağlamını işaret eder.Aşağıdaki tanıma sahiptir:

typedef struct _DISPATCHER_CONTEXT {
    ULONG64 ControlPc;
    ULONG64 ImageBase;
    PRUNTIME_FUNCTION FunctionEntry;
    ULONG64 EstablisherFrame;
    ULONG64 TargetIp;
    PCONTEXT ContextRecord;
    PEXCEPTION_ROUTINE LanguageHandler;
    PVOID HandlerData;
} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;

ControlPc bu işlev içerisinde RIP değeridir.Bu, bir özel durum adresi veya denetimin kurucu işlevden ayrıldığı adrestir.Bu, kontrolün bu işlevdeki korunmakta olan bir yapıda mı olduğunu belirlemek için kullanılacak olan RIP'tir.

ImageBase, işlem girdisinde ve geri alma bilgisinde göreli adresleri kaydetmek için kullanan, 32-bit uzaklıklara eklenecek, bu işlemi barındıran modülün resim tabanıdır (yük adresi).

FunctionEntry, RUNTIME_FUNCTION işlevi ve bu işlev için geriye doğru izleme bilgi görüntü tabanlı göreli adresleri tutarak, işlev girdisine bir işaretçi sağlar.

EstablisherFrame bu işlev için sabit yığın ayrımının temelinin adresidir.

TargetIp Açmaya ait devam adresini belirten isteğe bağlı talimat adresi sağlar.EstablisherFrame öğesi belirtilmezse bu adres yok sayılır.

ContextRecord istem özel durumu gönderme/bırakma kodu tarafından kullanılmak üzere, özel durumunu ifade eder.

LanguageHandler öğesi, çağrılan dile özgü dil işleyicisi yordamına işaret eder.

HandlerData bu işlev için dile özgü işleyici verilerini gösterir.

Ayrıca bkz.

Başvuru

Özel Durum İşleme (x64)