Commit f09ed5e8 authored by Vitaliy Margolen's avatar Vitaliy Margolen Committed by Alexandre Julliard

Add some 64 bit definitions.

parent 5903c5df
...@@ -236,6 +236,12 @@ typedef struct _ADDRESS { ...@@ -236,6 +236,12 @@ typedef struct _ADDRESS {
ADDRESS_MODE Mode; ADDRESS_MODE Mode;
} ADDRESS, *PADDRESS; } ADDRESS, *PADDRESS;
typedef struct _ADDRESS64 {
DWORD64 Offset;
WORD Segment;
ADDRESS_MODE Mode;
} ADDRESS64, *LPADDRESS64;
typedef struct _KDHELP { typedef struct _KDHELP {
DWORD Thread; DWORD Thread;
DWORD ThCallbackStack; DWORD ThCallbackStack;
...@@ -246,6 +252,18 @@ typedef struct _KDHELP { ...@@ -246,6 +252,18 @@ typedef struct _KDHELP {
DWORD SystemRangeStart; DWORD SystemRangeStart;
} KDHELP, *PKDHELP; } KDHELP, *PKDHELP;
typedef struct _KDHELP64 {
DWORD64 Thread;
DWORD ThCallbackStack;
DWORD ThCallbackBStore;
DWORD NextCallback;
DWORD FramePointer;
DWORD64 KiCallUserMode;
DWORD64 KeUserCallbackDispatcher;
DWORD64 SystemRangeStart;
DWORD64 Reserved[8];
} KDHELP64, *PKDHELP64;
typedef struct _STACKFRAME { typedef struct _STACKFRAME {
ADDRESS AddrPC; ADDRESS AddrPC;
ADDRESS AddrReturn; ADDRESS AddrReturn;
...@@ -259,6 +277,20 @@ typedef struct _STACKFRAME { ...@@ -259,6 +277,20 @@ typedef struct _STACKFRAME {
KDHELP KdHelp; KDHELP KdHelp;
} STACKFRAME, *LPSTACKFRAME; } STACKFRAME, *LPSTACKFRAME;
typedef struct _STACKFRAME64 {
ADDRESS64 AddrPC;
ADDRESS64 AddrReturn;
ADDRESS64 AddrFrame;
ADDRESS64 AddrStack;
ADDRESS64 AddrBStore;
PVOID FuncTableEntry;
DWORD64 Params[4];
BOOL Far;
BOOL Virtual;
DWORD64 Reserved[3];
KDHELP64 KdHelp;
} STACKFRAME64, *LPSTACKFRAME64;
typedef struct _SOURCEFILE { typedef struct _SOURCEFILE {
DWORD64 ModBase; DWORD64 ModBase;
PCHAR FileName; PCHAR FileName;
...@@ -398,17 +430,33 @@ typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)( ...@@ -398,17 +430,33 @@ typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
DWORD nSize, PDWORD lpNumberOfBytesRead DWORD nSize, PDWORD lpNumberOfBytesRead
); );
typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)(
HANDLE hProcess, DWORD64 lpBaseAddress, PVOID lpBuffer,
DWORD nSize, LPDWORD lpNumberOfBytesRead
);
typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)( typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
HANDLE hProcess, DWORD AddrBase HANDLE hProcess, DWORD AddrBase
); );
typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
HANDLE hProcess, DWORD64 AddrBase
);
typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)( typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
HANDLE hProcess, DWORD ReturnAddress); HANDLE hProcess, DWORD ReturnAddress);
typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(
HANDLE hProcess, DWORD64 ReturnAddress);
typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)( typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
HANDLE hProcess, HANDLE hThread, PADDRESS lpaddr HANDLE hProcess, HANDLE hThread, PADDRESS lpaddr
); );
typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(
HANDLE hProcess, HANDLE hThread, LPADDRESS64 lpaddr
);
/*********************************************************************** /***********************************************************************
* Functions * Functions
*/ */
...@@ -541,6 +589,14 @@ BOOL WINAPI StackWalk( ...@@ -541,6 +589,14 @@ BOOL WINAPI StackWalk(
PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
PTRANSLATE_ADDRESS_ROUTINE TranslateAddress PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
); );
BOOL WINAPI StackWalk64(
DWORD MachineType, HANDLE hProcess, HANDLE hThread,
LPSTACKFRAME64 StackFrame, PVOID ContextRecord,
PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
);
BOOL WINAPI SymCleanup( BOOL WINAPI SymCleanup(
HANDLE hProcess HANDLE hProcess
); );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment