6 #ifndef _INC_cNTDbgHelp_H
7 #define _INC_cNTDbgHelp_H
12 #include "../GrayLibBase.h"
14 #if defined(_WIN32) && ! defined(UNDER_CE) && defined(_MSC_VER)
21 MiniDumpNormal = 0x0000,
28 #pragma warning(disable:4091)
34 class GRAYLIB_LINK cNTDbgHelp :
public cSingletonSmart<cNTDbgHelp>,
public cOSModule
41 friend class cSingleton < cNTDbgHelp > ;
42 typedef cOSModule SUPER_t;
45 typedef BOOL(WINAPI *MiniDumpWriteDump_t)(
46 HANDLE hProcess, DWORD dwPid, HANDLE hFile,
enum _MINIDUMP_TYPE DumpType,
47 const struct _MINIDUMP_EXCEPTION_INFORMATION* ExceptionParam,
48 const struct _MINIDUMP_USER_STREAM_INFORMATION* UserStreamParam,
49 const struct _MINIDUMP_CALLBACK_INFORMATION* CallbackParam
51 typedef BOOL(WINAPI *SymInitialize_t)(IN HANDLE hProcess, IN PSTR UserSearchPath, IN BOOL fInvadeProcess);
52 typedef BOOL(WINAPI *SymCleanup_t)(IN HANDLE hProcess);
53 typedef DWORD(WINAPI *SymGetOptions_t)(void);
54 typedef DWORD(WINAPI *SymSetOptions_t)(IN DWORD SymOptions);
55 typedef BOOL(WINAPI *SymGetSearchPath_t)(HANDLE hProcess, PSTR pSearchPath, DWORD SearchPathLength);
56 typedef DWORD(WINAPI *UnDecorateSymbolName_t)(PCSTR DecoratedName, PSTR UnDecoratedName, DWORD UndecoratedLength, DWORD Flags);
58 typedef BOOL(WINAPI *StackTrace_t)(
62 STACKFRAME* StackFrame,
64 PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
65 PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
66 PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
67 PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
69 typedef BOOL(WINAPI * SymGetSymFromAddr_t)(
70 IN HANDLE hProcess, IN DWORD dwAddr,
71 OUT PUINT pdwDisplacement, OUT PIMAGEHLP_SYMBOL Symbol);
73 typedef PVOID(WINAPI *SymFunctionTableAccess_t)(HANDLE hProcess, DWORD AddrBase);
75 typedef DWORD(WINAPI *SymGetModuleBase_t)(IN HANDLE hProcess, IN DWORD dwAddr);
77 typedef BOOL(WINAPI *SymGetLineFromAddr_t)(IN HANDLE hProcess, IN DWORD dwAddr, OUT PDWORD pdwDisplacement, OUT PIMAGEHLP_LINE Line);
79 typedef BOOL(WINAPI *SymGetModuleInfo_t)(IN HANDLE hProcess, IN DWORD dwAddr, OUT PIMAGEHLP_MODULE ModuleInfo);
81 typedef DWORD(WINAPI *SymLoadModule_t)(IN HANDLE hProcess, IN HANDLE hFile, IN PSTR ImageName, IN PSTR ModuleName, IN DWORD BaseOfDll, IN DWORD SizeOfDll);
84 typedef BOOL(WINAPI *StackTrace64_t)(
88 LPSTACKFRAME64 StackFrame,
90 PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
91 PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
92 PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
93 PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress);
94 typedef BOOL(WINAPI * SymGetSymFromAddr64_t)(
95 IN HANDLE hProcess, IN UINT64 dwAddr,
96 OUT PUINT64 pdwDisplacement, OUT PIMAGEHLP_SYMBOL64 Symbol);
97 typedef PVOID(WINAPI *SymFunctionTableAccess64_t)(HANDLE hProcess, UINT64 AddrBase);
98 typedef UINT64(WINAPI *SymGetModuleBase64_t)(IN HANDLE hProcess, IN UINT64 dwAddr);
99 typedef BOOL(WINAPI *SymGetLineFromAddr64_t)(IN HANDLE hProcess, IN UINT64 dwAddr, OUT PDWORD pdwDisplacement, OUT PIMAGEHLP_LINE64 Line);
100 typedef BOOL(WINAPI *SymGetModuleInfo64_t)(IN HANDLE hProcess, IN UINT64 dwAddr, OUT PIMAGEHLP_MODULE64 ModuleInfo);
101 typedef UINT64(WINAPI *SymLoadModule64_t)(IN HANDLE hProcess, IN HANDLE hFile, IN PSTR ImageName, IN PSTR ModuleName, IN UINT64 BaseOfDll, IN DWORD SizeOfDll);
106 virtual ~cNTDbgHelp();
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35