Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cNTDbgHelp.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cNTDbgHelp_H
7 #define _INC_cNTDbgHelp_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
13 
14 #if defined(_WIN32) && ! defined(UNDER_CE) && defined(_MSC_VER)
17 
18 #ifdef __GNUC__
19 enum _MINIDUMP_TYPE
20 {
21  MiniDumpNormal = 0x0000,
22 };
23 struct STACKFRAME
24 {
25 };
26 
27 #else
28 #pragma warning(disable:4091) // 'typedef ': ignored on left of '' when no variable is declared
29 #include <dbghelp.h> // If VC7 and later, then use the shipped 'dbghelp.h'-file. (_MSC_VER >= 1300)
30 #endif
31 
32 namespace GrayLib
33 {
34  class GRAYLIB_LINK cNTDbgHelp : public cSingletonSmart<cNTDbgHelp>, public cOSModule
35  {
40 
41  friend class cSingleton < cNTDbgHelp > ;
42  typedef cOSModule SUPER_t;
43 
44  public:
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
50  );
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);
57 
58  typedef BOOL(WINAPI *StackTrace_t)(
59  DWORD MachineType,
60  HANDLE hProcess,
61  HANDLE hThread,
62  STACKFRAME* StackFrame,
63  PVOID ContextRecord,
64  PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
65  PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
66  PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
67  PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
68 
69  typedef BOOL(WINAPI * SymGetSymFromAddr_t)(
70  IN HANDLE hProcess, IN DWORD dwAddr,
71  OUT PUINT pdwDisplacement, OUT PIMAGEHLP_SYMBOL Symbol);
72 
73  typedef PVOID(WINAPI *SymFunctionTableAccess_t)(HANDLE hProcess, DWORD AddrBase);
74 
75  typedef DWORD(WINAPI *SymGetModuleBase_t)(IN HANDLE hProcess, IN DWORD dwAddr);
76 
77  typedef BOOL(WINAPI *SymGetLineFromAddr_t)(IN HANDLE hProcess, IN DWORD dwAddr, OUT PDWORD pdwDisplacement, OUT PIMAGEHLP_LINE Line);
78 
79  typedef BOOL(WINAPI *SymGetModuleInfo_t)(IN HANDLE hProcess, IN DWORD dwAddr, OUT PIMAGEHLP_MODULE ModuleInfo);
80 
81  typedef DWORD(WINAPI *SymLoadModule_t)(IN HANDLE hProcess, IN HANDLE hFile, IN PSTR ImageName, IN PSTR ModuleName, IN DWORD BaseOfDll, IN DWORD SizeOfDll);
82 
83 #ifdef USE_64BIT
84  typedef BOOL(WINAPI *StackTrace64_t)(
85  DWORD MachineType,
86  HANDLE hProcess,
87  HANDLE hThread,
88  LPSTACKFRAME64 StackFrame,
89  PVOID ContextRecord,
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); // uses CHAR
102 #endif
103 
104  protected:
105  cNTDbgHelp();
106  virtual ~cNTDbgHelp();
107  };
108 };
109 #endif
110 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
Definition: cMesh.h:22