1 /** 2 * ... 3 * 4 * Copyright: Copyright Benjamin Thaut 2010 - 2011. 5 * License: Distributed under the 6 * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). 7 * (See accompanying file LICENSE) 8 * Authors: Benjamin Thaut, Sean Kelly 9 * Source: $(DRUNTIMESRC core/sys/windows/_dbghelp_types.d) 10 */ 11 12 /// Automatically imported and edited from the druntime module 13 /// core.sys.windows.dbghelp_types for the auto-generated win32 package. 14 module win32.dbghelp_types; 15 //version (Windows): 16 @system: 17 18 version (ANSI) {} else version = Unicode; 19 20 import win32.windef; 21 import win32.imagehlp /+: ADDRESS_MODE+/; 22 23 public import win32.winnt : TCHAR; 24 25 /* 26 enum ADDRESS_MODE : DWORD 27 { 28 AddrMode1616 = 0, 29 AddrMode1632 = 1, 30 AddrModeReal = 2, 31 AddrModeFlat = 3, 32 } 33 */ 34 enum : DWORD 35 { 36 SYMOPT_DEFERRED_LOAD = 0x00000004, 37 SYMOPT_FAIL_CRITICAL_ERRORS = 0x00000200, 38 SYMOPT_LOAD_LINES = 0x00000010, 39 SYMOPT_DEBUG = 0x80000000, 40 } 41 42 enum : ULONG 43 { 44 CBA_READ_MEMORY = 0x00000006, 45 CBA_DEBUG_INFO = 0x10000000, 46 } 47 48 public import win32.basetyps : GUID; 49 50 struct ADDRESS64 51 { 52 DWORD64 Offset; 53 WORD Segment; 54 ADDRESS_MODE Mode; 55 } 56 57 struct KDHELP64 58 { 59 DWORD64 Thread; 60 DWORD ThCallbackStack; 61 DWORD ThCallbackBStore; 62 DWORD NextCallback; 63 DWORD FramePointer; 64 DWORD64 KiCallUserMode; 65 DWORD64 KeUserCallbackDispatcher; 66 DWORD64 SystemRangeStart; 67 DWORD64 KiUserExceptionDispatcher; 68 DWORD64 StackBase; 69 DWORD64 StackLimit; 70 DWORD64[5] Reserved; 71 } 72 73 struct STACKFRAME64 74 { 75 ADDRESS64 AddrPC; 76 ADDRESS64 AddrReturn; 77 ADDRESS64 AddrFrame; 78 ADDRESS64 AddrStack; 79 ADDRESS64 AddrBStore; 80 PVOID FuncTableEntry; 81 DWORD64[4] Params; 82 BOOL Far; 83 BOOL Virtual; 84 DWORD64[3] Reserved; 85 KDHELP64 KdHelp; 86 } 87 88 public import win32.winnt : IMAGE_FILE_MACHINE_I386, IMAGE_FILE_MACHINE_IA64, IMAGE_FILE_MACHINE_AMD64; 89 90 struct IMAGEHLP_LINEA64 91 { 92 DWORD SizeOfStruct; 93 PVOID Key; 94 DWORD LineNumber; 95 PCSTR FileName; 96 DWORD64 Address; 97 } 98 struct IMAGEHLP_LINEW64 99 { 100 DWORD SizeOfStruct; 101 PVOID Key; 102 DWORD LineNumber; 103 PWSTR FileName; 104 DWORD64 Address; 105 } 106 107 enum SYM_TYPE : int 108 { 109 SymNone = 0, 110 SymCoff, 111 SymCv, 112 SymPdb, 113 SymExport, 114 SymDeferred, 115 SymSym, 116 SymDia, 117 SymVirtual, 118 NumSymTypes, 119 } 120 121 struct IMAGEHLP_MODULEA64 122 { 123 DWORD SizeOfStruct; 124 DWORD64 BaseOfImage; 125 DWORD ImageSize; 126 DWORD TimeDateStamp; 127 DWORD CheckSum; 128 DWORD NumSyms; 129 SYM_TYPE SymType; 130 CHAR[32] ModuleName = 0; 131 CHAR[256] ImageName = 0; 132 CHAR[256] LoadedImageName = 0; 133 // new elements: 07-Jun-2002 134 version (none) 135 { 136 CHAR[256] LoadedPdbName = 0; 137 DWORD CVSig; 138 CHAR[MAX_PATH*3] CVData = 0; 139 DWORD PdbSig; 140 GUID PdbSig70; 141 DWORD PdbAge; 142 BOOL PdbUnmatched; 143 BOOL DbgUnmachted; 144 BOOL LineNumbers; 145 BOOL GlobalSymbols; 146 BOOL TypeInfo; 147 } 148 // new elements: 17-Dec-2003 149 version (none) 150 { 151 BOOL SourceIndexed; 152 BOOL Publics; 153 } 154 } 155 struct IMAGEHLP_MODULEW64 156 { 157 DWORD SizeOfStruct; 158 DWORD64 BaseOfImage; 159 DWORD ImageSize; 160 DWORD TimeDateStamp; 161 DWORD CheckSum; 162 DWORD NumSyms; 163 SYM_TYPE SymType; 164 WCHAR[32] ModuleName = 0; 165 WCHAR[256] ImageName = 0; 166 WCHAR[256] LoadedImageName = 0; 167 // new elements: 07-Jun-2002 168 version (none) 169 { 170 WCHAR[256] LoadedPdbName = 0; 171 DWORD CVSig; 172 WCHAR[MAX_PATH*3] CVData = 0; 173 DWORD PdbSig; 174 GUID PdbSig70; 175 DWORD PdbAge; 176 BOOL PdbUnmatched; 177 BOOL DbgUnmachted; 178 BOOL LineNumbers; 179 BOOL GlobalSymbols; 180 BOOL TypeInfo; 181 } 182 // new elements: 17-Dec-2003 183 version (none) 184 { 185 BOOL SourceIndexed; 186 BOOL Publics; 187 } 188 } 189 190 struct IMAGEHLP_SYMBOLA64 191 { 192 DWORD SizeOfStruct; 193 DWORD64 Address; 194 DWORD Size; 195 DWORD Flags; 196 DWORD MaxNameLength; 197 CHAR[1] Name = 0; 198 } 199 struct IMAGEHLP_SYMBOLW64 200 { 201 DWORD SizeOfStruct; 202 DWORD64 Address; 203 DWORD Size; 204 DWORD Flags; 205 DWORD MaxNameLength; 206 WCHAR[1] Name = 0; 207 } 208 209 210 struct IMAGEHLP_CBA_READ_MEMORY 211 { 212 DWORD64 addr; 213 PVOID buf; 214 DWORD bytes; 215 DWORD *bytesread; 216 } 217 218 struct API_VERSION 219 { 220 USHORT MajorVersion; 221 USHORT MinorVersion; 222 USHORT Revision; 223 USHORT Reserved; 224 } 225 226 version (Unicode) 227 { 228 alias IMAGEHLP_LINEW64 IMAGEHLP_LINE64; 229 alias IMAGEHLP_MODULEW64 IMAGEHLP_MODULE64; 230 alias IMAGEHLP_SYMBOLW64 IMAGEHLP_SYMBOL64; 231 } 232 else 233 { 234 alias IMAGEHLP_LINEA64 IMAGEHLP_LINE64; 235 alias IMAGEHLP_MODULEA64 IMAGEHLP_MODULE64; 236 alias IMAGEHLP_SYMBOLA64 IMAGEHLP_SYMBOL64; 237 }