estrutura UNWIND_INFO
A estrutura de informações de dados de desenrolamento é usada para registrar os efeitos de que uma função tem no ponteiro de pilha e onde os registradores de não-volátil são salvos na pilha:
UBYTE: 3 |
Version |
UBYTE: 5 |
Sinalizadores |
UBYTE |
Tamanho de prólogo |
UBYTE |
Contagem dos códigos de desenrolamento |
UBYTE: 4 |
Registro de quadro |
UBYTE: 4 |
Deslocamento de quadro de registro (dimensionado) |
USHORT * n |
Matriz de códigos de desenrolamento. |
variable |
Pode ser de formulário (1) ou (2) abaixo |
(1) Manipulador de exceção
ULONG |
Endereço do manipulador de exceção |
variable |
Dados do manipulador de determinado idioma (opcionais) |
(2) Encadeado desenrolar Info
ULONG |
Endereço de início da função |
ULONG |
Endereço de final de função |
ULONG |
Endereço de info de desenrolamento. |
A estrutura UNWIND_INFO deve ser DWORD alinhado na memória. O significado de cada campo é o seguinte:
Version
Número de versão dos dados de desenrolamento, atualmente 1.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 procurando funções precisam examinar exceções.
UNW_FLAG_UHANDLER a função tem um manipulador de terminação que deve ser chamado quando o desenrolar a exceção.
UNW_FLAG_CHAININFO Isso desenrolar info estrutura não é a principal para o procedimento. Em vez disso, o encadeado desenrolar info de entrada é o conteúdo de uma entrada RUNTIME_FUNCTION anterior. Consulte o seguinte texto para uma explicação sobre encadeadas desenrolar estruturas de informações. Se este sinalizador estiver definido, os sinalizadores UNW_FLAG_EHANDLER e UNW_FLAG_UHANDLER devem ser limpo. Além disso, os campos de alocação de quadro register e pilha fixa devem ter os mesmos valores como no principal desenrolar info.
Tamanho de prólogo
Comprimento de prólogo do função em bytes.Contagem dos códigos de desenrolamento
Este é o número de slots da matriz de códigos de desenrolamento. Observe que alguns códigos (por exemplo, UWOP_SAVE_NONVOL) de desenrolamento exigem mais de um slot no array.Registro de quadro
Se for diferente de zero, em seguida, a função usa um ponteiro de quadro e este campo é o número do registro não-volátil usado como o ponteiro do quadro, usando a mesma codificação para o campo de informações da operação de nós UNWIND_CODE.Quadro de registrar o deslocamento (dimensionado)
Se o campo do registro de quadro for diferente de zero, este é o deslocamento de escala do RSP é aplicado para o reg FP quando ela é estabelecida. O reg FP real é definido como RSP + 16 * este número, permitindo que os deslocamentos de 0 a 240. Isso permite apontando o 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 de menores (mais instruções podem usar o formulário de deslocamento assinado de 8 bits).Matriz de códigos de desenrolamento.
Esta é uma matriz dos itens que explica o efeito de prólogo RSP e registradores de não-volátil. Consulte a seção sobre UNWIND_CODE para os significados dos itens individuais. Para fins de alinhamento, essa matriz terá sempre um número par de entradas, com a entrada final potencialmente não utilizada que (caso em que a matriz será uma maior do que o indicado pela contagem de campo de códigos de desenrolamento).Endereço do manipulador de exceção
Este é um ponteiro de imagem relativo ao manipulador de exceção de determinado idioma/término da função (se o sinalizador UNW_FLAG_CHAININFO está desmarcado e um dos sinalizadores UNW_FLAG_EHANDLER ou UNW_FLAG_UHANDLER é definido).Dados específicos do idioma manipulador
Esta é a dados da função do manipulador de exceção específico do idioma. O formato desses dados é não for especificado e totalmente determinado pelo manipulador de exceção específico em uso.Encadeadas desenrolar Info
Se o sinalizador UNW_FLAG_CHAININFO é definida a estrutura UNWIND_INFO termina com três UWORDs. Essas UWORDs representam as informações de RUNTIME_FUNCTION para a função do desenrolamento encadeada.
Consulte também
Referência
Desenrolar dados para manipulação de exceção, suporte a depurador