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 或更高版本 |