STACKFRAME64 结构 (dbghelp.h)

表示堆栈帧。

语法

typedef struct _tagSTACKFRAME64 {
  ADDRESS64 AddrPC;
  ADDRESS64 AddrReturn;
  ADDRESS64 AddrFrame;
  ADDRESS64 AddrStack;
  ADDRESS64 AddrBStore;
  PVOID     FuncTableEntry;
  DWORD64   Params[4];
  BOOL      Far;
  BOOL      Virtual;
  DWORD64   Reserved[3];
  KDHELP64  KdHelp;
} STACKFRAME64, *LPSTACKFRAME64;

成员

AddrPC

指定程序计数器 的ADDRESS64 结构。

x86: 程序计数器为 EIP。

Intel Itanium: 程序计数器为 StIIP。

x64: 程序计数器为 RIP。

AddrReturn

指定返回地址 的ADDRESS64 结构。

AddrFrame

指定帧指针 的ADDRESS64 结构。

x86: 框架指针为 EBP。

Intel Itanium: 没有框架指针,但使用 AddrBStore

x64: 帧指针为 RBP 或 RDI。 此值并非始终使用。

AddrStack

指定堆栈指针 的ADDRESS64 结构。

x86: 堆栈指针为 ESP。

Intel Itanium: 堆栈指针为 SP。

x64: 堆栈指针为 RSP。

AddrBStore

Intel Itanium: 一个ADDRESS64结构,指定 rsBSP) (后备存储。

FuncTableEntry

在 x86 计算机上,此成员是 一个FPO_DATA 结构。 如果没有函数表条目,则此成员为 NULL

Params[4]

函数的可能参数。

Far

如果这是 WOW 远调用,则此成员为 TRUE

Virtual

如果这是虚拟帧,则此成员为 TRUE

Reserved[3]

此成员由 StackWalk64 函数在内部使用。

KdHelp

一个KDHELP64结构,指定用于遍走内核回调帧的帮助程序数据。

注解

此结构取代 STACKFRAME 结构。 有关详细信息,请参阅 更新的平台支持STACKFRAME 在 Dbghelp.h 中定义如下。

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define STACKFRAME STACKFRAME64
#define LPSTACKFRAME LPSTACKFRAME64
#else
typedef struct _tagSTACKFRAME {
    ADDRESS     AddrPC;
    ADDRESS     AddrReturn;
    ADDRESS     AddrFrame;
    ADDRESS     AddrStack;
    PVOID       FuncTableEntry;
    DWORD       Params[4];
    BOOL        Far;
    BOOL        Virtual; 
    DWORD       Reserved[3];
    KDHELP      KdHelp;
    ADDRESS     AddrBStore; 
} STACKFRAME, *LPSTACKFRAME;
#endif

要求

要求
Header dbghelp.h
可再发行组件 DbgHelp.dll 5.1 或更高版本

另请参阅

ADDRESS64

FPO_DATA

IMAGE_FUNCTION_ENTRY

KDHELP64

StackWalk64