Поделиться через


Структура 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 или более поздней версии

См. также раздел

АДРЕС

FPO_DATA

IMAGE_FUNCTION_ENTRY

KDHELP

StackWalk