struct UNWIND_INFO
A estrutura de informações de dados de desenrolamento é usada para registrar os efeitos de que uma função tem o ponteiro de pilha e onde os registros não-volátil são salvos na pilha:
UBYTE: 3 |
Versão |
UBYTE: 5 |
Sinalizadores |
UBYTE |
dimensionar de prólogo |
UBYTE |
Contagem de desenrolamento códigos |
UBYTE: 4 |
Registro de quadro |
UBYTE: 4 |
Quadro Register deslocamento (escalado) |
USHORT * n |
Desenrolar códigos de matriz |
variable |
(1) (2) Pode ser de formulário ou abaixo |
(1) Manipulador de exceções
ULONG |
Endereço do manipulador de exceção |
variable |
específico a um linguagem manipulador de dados (opcionais) |
(2) Encadeado desenrolar informações
ULONG |
Endereço inicial de função |
ULONG |
Endereço participante da função |
ULONG |
Desenrolar informações de endereço |
A estrutura UNWIND_INFO deve ser DWORD alinhado na memória.O significado de cada campo é o seguinte:
Versão
Número de versão dos dados de desenrolamento, 1 no momento.Sinalizadores
Três sinalizadores são definidos no momento:UNW_FLAG_EHANDLER a função tem um manipulador de exceção que deve ser chamado quando estão à procura de funções que precisam examinar a exceções.
UNW_FLAG_UHANDLER a função tem um manipulador de terminação que deve ser chamado quando uma exceção desenrolar.
UNW_FLAG_CHAININFO Isto desenrolamento de informações da estrutura não é a principal para o procedimento.Em vez disso, a cadeia desenrolar informações de entrada é o Sumário de uma entrada RUNTIME_FUNCTION anterior.Ver o texto seguinte para obter uma explicação das encadeadas desenrolar estruturas de informações.Se este sinalizar for conjunto, e, em seguida, os sinalizares UNW_FLAG_EHANDLER e UNW_FLAG_UHANDLER devem ser limpos.Além disso, sistema autônomo campos de alocação de registro e pilha fixa quadro devem ter sistema autônomo mesmos valores sistema autônomo no principal desenrolar info.
dimensionar de prólogo
Comprimento de prólogo do função em bytes.Contagem de desenrolamento códigos
Este é o número de slots no conjunto de códigos de desenrolamento.Observe que alguns códigos (por exemplo, UWOP_SAVE_NONVOL) de desenrolamento exigem mais de um slot na matriz.Registro de quadro
Se diferente de zero, em seguida, a função usa um ponteiro de quadro e esse campo é o número do registro não volátil usado sistema autônomo o ponteiro do quadro, usando a mesma codificação para o campo de informações da operação UNWIND_CODE nós de.Quadro registrar deslocamento (escalado)
Se o campo de registro de quadro for diferente de zero, em seguida, esse é o deslocamento em escala do RSP é aplicado a reg FP quando for estabelecida.O reg FP real é conjunto RSP + 16 * este número, permitindo offconjuntos de 0 a 240.Isso permite apontando reg FP no meio da alocação de pilha local para quadros de pilha dinâmicas, permitindo melhor densidade de código por meio de instruções mais curtas (mais instruções podem usar o formulário de deslocamento assinado de 8 bit).Desenrolar códigos de matriz
Isso é uma matriz de itens que explica o efeito de prólogo nos registros não-volátil e RSP.Consulte a seção sobre UNWIND_CODE para os significados dos itens individuais.Para fins de alinhamento, essa matriz sempre terá um número par de entradas, com a entrada final potencialmente não usada (caso em que a matriz será um maior do que indicado pela contagem de desenrolamento códigos de campo).Endereço do manipulador de exceção
Este é um ponteiro de imagem relativo ao manipulador de exceção específico a um linguagem/encerramento da função (se o sinalizar UNW_FLAG_CHAININFO está desmarcada e um dos sinalizares UNW_FLAG_EHANDLER ou UNW_FLAG_UHANDLER será conjunto).Dados do manipulador específico a um linguagem
Esta é a dados do manipulador de exceção específico do linguagem da função.O formato desses dados é não for especificado e determinado completamente pelo manipulador de exceção específico em uso.Encadeadas desenrolar informações
Se UNW_FLAG_CHAININFO sinalizar estiver definido, em seguida, a estrutura UNWIND_INFO termina com três UWORDs.Esses UWORDs representam as informações de RUNTIME_FUNCTION para a função de desenrolamento encadeada.
Consulte também
Referência
Desenrolar dados para exceção Handling, suporte do depurador