struct UNWIND_INFO
A estrutura de informações de dados de desenrolamento é usada para registrar os efeitos que tem uma função no ponteiro de pilha e onde os registros permanentes são salvos na pilha:
UBYTE: 3 |
Versão |
UBYTE: 5 |
Sinalizadores |
UBYTE |
Tamanho de prolog |
UBYTE |
A contagem de códigos desenrola |
UBYTE: 4 |
Registro de quadro chave |
UBYTE: 4 |
Registro do quadro deslocado (dimensionado) |
* Em USHORT |
Desenrole a matriz de códigos |
variável |
Pode estar ou do formulário (1) ou abaixo (2) |
(1) Manipulador de exceção
ULONG |
Endereço do manipulador de exceção |
variável |
Dados específicos de linguagem do manipulador (opcional) |
(2) Encadeado desenrola informações
ULONG |
Endereço de início de função |
ULONG |
Endereço do final da função |
ULONG |
Desenrole o endereço de informações |
A estrutura de UNWIND_INFO deve ser DWORD alinhado na memória.O significado de cada campo é a seguinte:
Versão
Número de versão de dados de desenrolamento atualmente, 1.Sinalizadores
Três sinalizadores são definidos atualmente:UNW_FLAG_EHANDLER a função tem um manipulador de exceção que deve ser chamado para procurar as funções que precisam examinar exceções.
UNW_FLAG_UHANDLER a função tem um manipulador de fim que deve ser chamado para desenrolar uma exceção.
UNW_FLAG_CHAININFO que isso desenrola a estrutura de informações não é primária para o procedimento.Em vez disso, encadeados desenrolam a entrada de informações são o conteúdo de uma entrada anterior de RUNTIME_FUNCTION.Consulte o seguinte texto para obter uma explicação de encadeado para desenrolar estruturas de informações.Se este sinalizador é definido, os sinalizadores de UNW_FLAG_EHANDLER e de UNW_FLAG_UHANDLER devem ser apagados.Além disso, o registro do quadro e os campos de alocação de pilha fixa devem ter os mesmos valores que em primária para desenrolar informações.
Tamanho de prolog
Comprimento de prólogo de função em bytes.Contagem de códigos de desenrolar
Este é o número de slots na matriz de códigos de desenrolamento.Observe que alguns códigos desenrolam (por exemplo, UWOP_SAVE_NONVOL) requerem mais de um slot na matriz.Registro de quadro
Se for diferente de zero, a função usa um ponteiro de quadro, e esse campo é o número de registro permanente usado como o ponteiro do quadro, usando a mesma codificação para o campo de informações da operação de nós de UNWIND_CODE.Deslocamento do registro de quadro (dimensionado)
Se o campo do registro do quadro é diferente de zero, então este é o deslocamento dimensionado de RSP que é aplicado ao registro de FP quando se estabelece.O registro real de FP é definido como RSP + 16 * esse número, permitindo que desloca 0 a 240.Isso permite apontar o registro de FP no meio de alocação de pilha local para o quadro de pilha dinâmicos, permitindo que a melhor densidade de código com uma instruções mais curtas (mais declarações podem usar o formulário de 8 bits com sinal de deslocamento).Matriz de códigos desenrolar
Esta é uma matriz de itens que explica o efeito de prólogo os registros e em RSP permanentes.Consulte a seção em UNWIND_CODE para o significado de itens individuais.Para fins de alinhamento, essa matriz sempre terá mesmo um número de entradas, com a entrada final potencialmente não utilizadas (nesse caso a matriz será uma maior do que indicado pela contagem de desenrole o campo de códigos).Endereço do tratador de exceções
Este é um ponteiro de imagem relativa a qualquer o tratador específico de linguagem de exceção/fim de função (se o sinalizador UNW_FLAG_CHAININFO é claro e um dos sinalizadores UNW_FLAG_EHANDLER ou UNW_FLAG_UHANDLER é definido).Dados específicos do idioma do manipulador
Este é dados específicos do idioma de manipulador de exceção de função.O formato desses dados não especificado e completamente determinado pelo tratador específico de exceção em uso.Informações de desenrolar encadeadas
Se o sinalizador UNW_FLAG_CHAININFO é definir a estrutura de UNWIND_INFO termina com três UWORDs.Este UWORDs representa informações de RUNTIME_FUNCTION para a função de encadeado desenrola.
Consulte também
Referência
Dados desenrolados para tratamento de exceções, suporte do depurador