Delphi Internals: Exception Handling unter 64 Bit?
Hallo zusammen,
ich habe eine nicht ganz triviale Frage für die Leute, die gerne auch mal etwas unter die Haube schauen. Beim 64 Bit Compiler von Delphi wurde die Art, wie die kompilierten Programme Exceptions handlen laut diversen Quellen komplett überarbeitet. Bei meinen Nachforschungen habe ich unter anderem festgestellt, dass die generierte PE Datei eine zusätzliche .pdata Section enthält. Zitat:
Hintergrund ist, dass ich eine .dll per Manual Mapping in den Speicher lade und Funktionen daraus aufrufe. Unter 32 bit funktioniert dies mit Delphi DLLs wunderbar. C++ DLLs, welche ohne SafeSEH kompiliert wurden, kann ich sogar unter 32 und 64 Bit erfolgreich laden. Leider führt jeder try..except oder try..finally Block in einer 64 Bit Delphi DLL unmittelbar zu einer non continuable Exception, woraus ich schließe, dass dies mit dem neuen Exception Handling zusammenhängen muss (insbesondere, dass ich beim Mappen die .pdata Section noch parsen und anwenden muss). Viele Grüße Zacherl |
AW: Delphi Internals: Exception Handling unter 64 Bit?
Bin selbst auf die Lösung gekommen. Ein einfacher RtlAddFunctionTable Aufruf reicht, um die Exception Table auf den aktuellen Programmkontext anzuwenden.
|
AW: Delphi Internals: Exception Handling unter 64 Bit?
Delphi hält sich einfach nur an das Exception Handling, welches unter Win64 vorgeschrieben ist. Für mehr Informationen empfehle ich dir diese Links:
Ich hoffe das füllt ein wenig den Hintergrund, auch wenn du schon eine Lösung gefunden hast. :) Gruß, Sven |
AW: Delphi Internals: Exception Handling unter 64 Bit?
Interessanter Lesestoff. Danke dir :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz