Структура 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
Этот член имеет значение TRUE , если это вызов WOW far.
Virtual
Этот элемент имеет значение TRUE , если это виртуальный кадр.
Reserved[3]
Этот элемент используется внутри функции StackWalk .
KdHelp
Структура KDHELP , указывающая вспомогательные данные для обхода кадров обратного вызова ядра.
AddrBStore
Intel Itanium: Структура ADDRESS , указывающая резервное хранилище (RsBSP).
Комментарии
Эта структура заменяет структуру 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
Требования
Требование | Значение |
---|---|
Заголовок | dbghelp.h |
Распространяемые компоненты | DbgHelp.dll 5.1 или более поздней версии |