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