stackFRAME 结构 (dbghelp.h)

表示堆栈帧。

语法

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;

成员

AddrPC

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

x86: 程序计数器为 EIP。

Intel Itanium: 程序计数器为 StIIP。

x64: 程序计数器为 RIP。

AddrReturn

指定寄信人地址的 ADDRESS 结构。

AddrFrame

指定帧指针的 ADDRESS 结构。

x86: 帧指针为 EBP。

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

x64: 帧指针为 RBP 或 RDI。 此值并不总是使用。

AddrStack

指定堆栈指针的 ADDRESS 结构。

x86: 堆栈指针为 ESP。

Intel Itanium: 堆栈指针为 SP。

x64: 堆栈指针为 RSP。

FuncTableEntry

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

Params[4]

函数的可能参数。

Far

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

Virtual

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

Reserved[3]

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

KdHelp

KDHELP 结构,指定用于遍视内核回调帧的帮助程序数据。

AddrBStore

Intel Itanium: 指定 RsBSP) (后备存储的 ADDRESS 结构。

注解

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

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define STACKFRAME STACKFRAME64
#define LPSTACKFRAME LPSTACKFRAME64
#else
typedef struct _tagSTACKFRAME {
    ADDRESS     AddrPC;               // program counter
    ADDRESS     AddrReturn;           // return address
    ADDRESS     AddrFrame;            // frame pointer
    ADDRESS     AddrStack;            // stack pointer
    PVOID       FuncTableEntry;       // pointer to pdata/fpo or NULL
    DWORD       Params[4];            // possible arguments to the function
    BOOL        Far;                  // WOW far call
    BOOL        Virtual;              // is this a virtual frame?
    DWORD       Reserved[3];
    KDHELP      KdHelp;
    ADDRESS     AddrBStore;           // backing store pointer
} STACKFRAME, *LPSTACKFRAME;
#endif

要求

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

另请参阅

地址

FPO_DATA

IMAGE_FUNCTION_ENTRY

KDHELP

StackWalk