RUNTIME_FUNCTION 结构
更新:2007 年 11 月
基于表的异常处理需要一个面向分配堆栈空间或调用其他函数的所有函数(例如,非叶函数)的表项。函数表项的格式为:
ULONG |
函数起始地址 |
ULONG |
函数结束地址 |
ULONG |
展开信息地址 |
RUNTIME_FUNCTION 结构在内存中必须为 DWORD 对齐。所有地址都与映像相关,即相对于包含函数表项的映像起始地址有 32 位的偏移量。这些项已经过排序,放置在 PE32+ 映像的 .pdata 节中。对于动态生成的函数 [JIT 编译器],要支持这些函数的运行库必须使用 RtlInstallFunctionCallback 或 RtlAddFunctionTable,以便向操作系统提供此信息。如果不能满足此要求,则会导致不可靠的异常处理和进程调试。