在Windows SEH数据中,存在为给定RUNTIME_FUNCTION
定义一些伪操作的工具,这些伪操作描述其对堆栈的影响。它们在UNWIND_CODE
:http://msdn.microsoft.com/en-us/library/ck9asaa9.aspx
但是,Microsoft只记录了版本1!在Windows附带的一些东西(例如记事本)中,异常处理数据的给定版本是2.它看起来好像它们非常相似(参见http://sourceforge.net/mailarchive/message.php?msg_id=31650579),除了有一个神秘的和非常常见的操作代码6,在版本1文档中没有定义。
从我公认的小样本看来,操作信息似乎总是0或1,并且操作似乎只占用展开操作数据中的一个插槽。
似乎在ReactOS中,它被认为是指UWOP_SAVE_XMM(见http://doxygen.reactos.org/d4/d85/rtl_2amd64_2unwind_8c_a552b9ed5f66cb1a0015f7523bfce2eb9.html#a552b9ed5f66cb1a0015f7523bfce2eb9)。在这种情况下(“版本2”情况),这是不太可能的意思,因为以下插槽包含有效的展开操作而不是合理的内存偏移。
展开操作6是什么意思?