Verkettete Entladeinfostrukturen
Aktualisiert: November 2007
Wenn das UNW_FLAG_CHAININFO-Flag festgelegt ist, ist die Entladeinformationsstruktur eine sekundäre und enthält einen abbildbezogenen Zeiger im Adressfeld für den Ausnahmehandler und die Verkettungsinformationen. Dieser Zeiger verweist auf den RUNTIME_FUNCTION-Einstiegspunkt, der auf die primären Entladeinformationen verweist.
Verkettungsinformationen sind in zwei Situationen hilfreich. Zunächst können sie für nicht zusammenhängende Codesegmente verwendet werden. Durch Verwendung von Verkettungsinformationen kann die Größe der erforderlichen Entladeinformationen verringert werden, da das Entladecode-Array aus den primären Entladeinformationen nicht dupliziert werden muss.
Verkettetungsinformationen können außerdem für das Komprimieren beim Speichern flüchtiger Register verwendet werden. Vom Compiler wird möglicherweise eine Verzögerung der Speicherung flüchtiger Register veranlasst, bis der Funktionseintragsprolog verlassen wurde. Dies kann aufgezeichnet werden, indem primäre Entladeinformationen für den Teil der Funktion, der sich vor dem komprimierten Code befindet, verwendet werden. Die Verkettungsinformationen werden dann mit einem Prolog mit einer Länge ungleich 0 (Null) eingerichtet, wobei die Entladecodes in den Verkettungsinformationen die Speicherungen der nicht flüchtigen Register wiedergeben. In diesem Fall sind die Entladecodes sämtlich Instanzen von UWOP_SAVE_NONVOL. Das Komprimieren zum Speichern nicht flüchtiger Register mit einer PUSH-Anweisung wird ebenso wenig unterstützt wie das Komprimieren, bei dem RSP mit einer zusätzlichen festen Stapelzuweisung geändert wird.
Bei einem UNWIND_INFO-Element kann UNW_FLAG_CHAININFO auf einen RUNTIME_FUNCTION-Eintrag verweisen, für dessen UNWIND_INFO-Element ebenfalls ein UNW_FLAG_CHAININFO festgelegt ist (mehrfache Komprimierung). Die Verweise der verketteten Entladeinformationszeiger erreichen schließlich ein UNWIND_INFO-Element mit deaktiviertem UNW_FLAG_CHAININFO; dies ist das primäre UNWIND_INFO-Element, das auf den tatsächlichen Einstiegspunkt der Prozedur verweist.
Siehe auch
Referenz
Entladedaten für die Ausnahmebehandlung, Debuggerunterstützung