struct UNWIND_INFO

Struktura info odkręcanie danych jest używana do rejestrowania zmian spowodowanych przez funkcję ma na wskaźnik stosu i gdzie nieulotna rejestrów, które są zapisywane na stosie:

UBYTE: 3

Wersja

UBYTE: 5

Flagi

UBYTE

Rozmiar prologu

UBYTE

Liczba kodów odkręcanie

UBYTE: 4

Rejestr ramki

UBYTE: 4

Przesunięcie rejestru ramki (skalowane)

USHORT * n

Odkręcanie tablica kodów

Zmienna

Albo można formularza (1) lub (2) poniżej

(1) Procedury obsługi wyjątków

ULONG

Adres procedury obsługi wyjątków

Zmienna

Danych obsługi języka (opcjonalnie)

(2) Powiązane odkręcanie Info

ULONG

Funkcja adres początkowy

ULONG

Funkcja adres końcowy

ULONG

Odkręcanie adres info

Struktura UNWIND_INFO musi być typu DWORD wyrównane w pamięci.Znaczenie każdego pola jest następująca:

  • Wersja
    Numer wersji danych odkręcanie, aktualnie 1.

  • Flagi
    Trzy flagi są aktualnie zdefiniowane:

    UNW_FLAG_EHANDLER funkcja ma procedury obsługi wyjątków, która powinna zostać wywołana przy poszukiwaniu funkcje, które trzeba będzie przejrzeć wyjątki.

    Funkcja używa procedury obsługi sytuacji krańcowych, która powinna być wywoływana po odkręcaniu wyjątek UNW_FLAG_UHANDLER.

    UNW_FLAG_CHAININFO to odkręcanie info struktura nie jest głównemu procedurą.Zamiast tego łańcuchowej odkręcanie info, że zapis jest zawartość poprzedni wpis RUNTIME_FUNCTION.Zobacz następujący tekst, aby uzyskać wyjaśnienie powiązane odkręcanie struktur info.Jeśli ta flaga jest ustawiona, można wyczyścić flagi UNW_FLAG_EHANDLER i UNW_FLAG_UHANDLER.Ponadto ramki rejestru-stack alokacji pola i musi mieć te same wartości jak w podstawowym odkręcanie info.

  • Rozmiar prologu
    Długość prologu funkcji w bajtach.

  • Liczba kodów odkręcanie
    Jest to liczba gniazd w odkręcanie tablica kodów.Uwaga, że odkręcanie niektóre kody (na przykład UWOP_SAVE_NONVOL) wymagają więcej niż jedno gniazdo w tablicy.

  • Rejestr ramki
    Jeśli jest niezerowa, następnie funkcja wykorzystuje wskaźnika klatki, a to pole jest numer telefonu z nieulotną pamięcią rejestru, używane jako wskaźnika klatki, przy użyciu tego samego kodowania dla pola info operacji węzłów UNWIND_CODE.

  • Ramka zarejestrować przesunięcie (skalowane)
    Jeśli pola rejestru ramki jest różna od zera, to przesunięcie skalowane od RSP zastosowanego do FP reg, gdy zostało ustalone.Rzeczywiste reg FP ustawiono RSP + 16 * tego numeru, dzięki czemu przesunięcia od 0 do 240.Pozwala to na, wskazując FP reg w środku alokacja lokalnego stosu dla ramek stosu dynamiczne, co pozwala lepiej gęstości kodu przez krótszy instrukcje (więcej instrukcji można użyć przesunięcia formularz podpisany 8-bitowa).

  • Odkręcanie tablica kodów
    Jest to szereg elementów, który wyjaśnia efekt prologu na nieulotna rejestrów i RSP.Zobacz sekcję na UNWIND_CODE, dla których znaczenie poszczególnych elementów.Do celów dostosowania tej tablicy zawsze mają parzystą liczbę wpisów, z ostatnim wpisem potencjalnie nieużywane (w którym to przypadku tablicy będzie być dłuższe niż określona przez liczbę odkręcanie kody pól).

  • Adres procedury obsługi wyjątków
    (Jeśli flaga UNW_FLAG_CHAININFO jest jasne i znajduje się jedną z flag, UNW_FLAG_EHANDLER lub UNW_FLAG_UHANDLER) jest wskaźnik obrazu względem obsługi języka wyjątek/zakończenie obu funkcji.

  • Danych obsługi języka
    Jest to wartość funkcji języka procedury obsługi wyjątku.Format tych danych jest nie określono tego parametru i całkowicie określona przez program obsługi wyjątku określonego w użyciu.

  • Powiązane odkręcanie Info
    Jeśli jest ustawiona flaga UNW_FLAG_CHAININFO struktury UNWIND_INFO kończy się z trzech UWORDs.UWORDs te reprezentują informacje o RUNTIME_FUNCTION dla funkcji łańcuchowej odkręcanie.

Zobacz też

Informacje

Dane operacji Unwind dla obsługi wyjątków, obsługa debugera