更新:2007 年 11 月
如果设置了 UNW_FLAG_CHAININFO 标志,则下一个将设置展开信息结构,展开信息结构在共享异常处理程序/链式信息地址字段中包含一个与图像相关的指针,该指针指向 RUNTIME_FUNCTION 项(指向主展开信息)。
在两种情况下链式信息十分有用。首先,它可用于非连续代码段。由于不需要重复主展开信息中的展开代码数组,因此使用链式信息可减小必需的展开信息的大小。
还可以使用链式信息处理易失寄存器保存内容的紧缩套装。编译器可以选择延迟保存一些易失寄存器,直到超出函数项 Prolog。通过在紧缩套装代码之前提供函数部分的主展开信息,可对此进行记录,然后通过 Prolog(长度不为零)设置链式信息,其中链式信息中的展开代码反映了非易失寄存器的保存内容。在这种情况下,展开代码都将是 UWOP_SAVE_NONVOL 的实例。不支持使用 PUSH 保存非易失寄存器的紧缩套装,也不支持通过其他固定堆栈分配修改 RSP 的紧缩套装。
具有 UNW_FLAG_CHAININFO 集的 UNWIND_INFO 项可以指向 RUNTIME_FUNCTION 项,而后者的 UNWIND_INFO 项也具有 UNW_FLAG_CHAININFO 集(多次紧缩套装)。最后,跟随链式展开信息,指针将到达 UNWIND_INFO 项(清除了 UNW_FLAG_CHAININFO),该项是指向实际过程入口点的主 UNWIND_INFO 项。