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
요구 사항
요구 사항 | 값 |
---|---|
헤더 | dbghelp.h |
재배포 가능 파일 | DbgHelp.dll 5.1 이상 |