ole32: Fix error handling in get_data_from_metafilepict and get_data_from_bitmap.
[wine.git] / include / dbghelp.h
blob34805f4e78a52c4af6590334b9adab405f21ed3c
1 /*
2 * Declarations for DBGHELP
4 * Copyright (C) 2003 Eric Pouech
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WINE_DBGHELP_H
22 #define __WINE_DBGHELP_H
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* defined(__cplusplus) */
28 #ifdef _WIN64
29 #ifndef _IMAGEHLP64
30 #define _IMAGEHLP64
31 #endif
32 #endif
34 #define IMAGEAPI WINAPI
35 #define DBHLPAPI IMAGEAPI
37 typedef struct _LOADED_IMAGE
39 PSTR ModuleName;
40 HANDLE hFile;
41 PUCHAR MappedAddress;
42 PIMAGE_NT_HEADERS FileHeader;
43 PIMAGE_SECTION_HEADER LastRvaSection;
44 ULONG NumberOfSections;
45 PIMAGE_SECTION_HEADER Sections;
46 ULONG Characteristics;
47 BOOLEAN fSystemImage;
48 BOOLEAN fDOSImage;
49 BOOLEAN fReadOnly;
50 UCHAR Version;
51 LIST_ENTRY Links;
52 ULONG SizeOfImage;
53 } LOADED_IMAGE, *PLOADED_IMAGE;
55 /*************************
56 * IMAGEHLP equiv *
57 *************************/
59 typedef enum
61 AddrMode1616,
62 AddrMode1632,
63 AddrModeReal,
64 AddrModeFlat
65 } ADDRESS_MODE;
67 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
68 #define ADDRESS ADDRESS64
69 #define LPADDRESS LPADDRESS64
70 #else
71 typedef struct _tagADDRESS
73 DWORD Offset;
74 WORD Segment;
75 ADDRESS_MODE Mode;
76 } ADDRESS, *LPADDRESS;
77 #endif
79 typedef struct _tagADDRESS64
81 DWORD64 Offset;
82 WORD Segment;
83 ADDRESS_MODE Mode;
84 } ADDRESS64, *LPADDRESS64;
86 #define SYMF_OMAP_GENERATED 0x00000001
87 #define SYMF_OMAP_MODIFIED 0x00000002
88 #define SYMF_USER_GENERATED 0x00000004
89 #define SYMF_REGISTER 0x00000008
90 #define SYMF_REGREL 0x00000010
91 #define SYMF_FRAMEREL 0x00000020
92 #define SYMF_PARAMETER 0x00000040
93 #define SYMF_LOCAL 0x00000080
94 #define SYMF_CONSTANT 0x00000100
95 #define SYMF_EXPORT 0x00000200
96 #define SYMF_FORWARDER 0x00000400
97 #define SYMF_FUNCTION 0x00000800
98 #define SYMF_VIRTUAL 0x00001000
99 #define SYMF_THUNK 0x00002000
100 #define SYMF_TLSREL 0x00004000
102 typedef enum
104 SymNone = 0,
105 SymCoff,
106 SymCv,
107 SymPdb,
108 SymExport,
109 SymDeferred,
110 SymSym,
111 SymDia,
112 SymVirtual,
113 NumSymTypes
114 } SYM_TYPE;
116 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
117 #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
118 #define IMAGEHLP_SYMBOLW IMAGEHLP_SYMBOLW64
119 #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
120 #define PIMAGEHLP_SYMBOLW PIMAGEHLP_SYMBOLW64
121 #else
122 typedef struct _IMAGEHLP_SYMBOL
124 DWORD SizeOfStruct;
125 DWORD Address;
126 DWORD Size;
127 DWORD Flags;
128 DWORD MaxNameLength;
129 CHAR Name[1];
130 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
132 typedef struct _IMAGEHLP_SYMBOLW
134 DWORD SizeOfStruct;
135 DWORD Address;
136 DWORD Size;
137 DWORD Flags;
138 DWORD MaxNameLength;
139 WCHAR Name[1];
140 } IMAGEHLP_SYMBOLW, *PIMAGEHLP_SYMBOLW;
141 #endif
143 typedef struct _IMAGEHLP_SYMBOL64
145 DWORD SizeOfStruct;
146 DWORD64 Address;
147 DWORD Size;
148 DWORD Flags;
149 DWORD MaxNameLength;
150 CHAR Name[1];
151 } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
153 typedef struct _IMAGEHLP_SYMBOLW64
155 DWORD SizeOfStruct;
156 DWORD64 Address;
157 DWORD Size;
158 DWORD Flags;
159 DWORD MaxNameLength;
160 WCHAR Name[1];
161 } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64;
163 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
164 #define IMAGEHLP_MODULE IMAGEHLP_MODULE64
165 #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
166 #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
167 #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
168 #else
169 typedef struct _IMAGEHLP_MODULE
171 DWORD SizeOfStruct;
172 DWORD BaseOfImage;
173 DWORD ImageSize;
174 DWORD TimeDateStamp;
175 DWORD CheckSum;
176 DWORD NumSyms;
177 SYM_TYPE SymType;
178 CHAR ModuleName[32];
179 CHAR ImageName[256];
180 CHAR LoadedImageName[256];
181 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
183 typedef struct _IMAGEHLP_MODULEW
185 DWORD SizeOfStruct;
186 DWORD BaseOfImage;
187 DWORD ImageSize;
188 DWORD TimeDateStamp;
189 DWORD CheckSum;
190 DWORD NumSyms;
191 SYM_TYPE SymType;
192 WCHAR ModuleName[32];
193 WCHAR ImageName[256];
194 WCHAR LoadedImageName[256];
195 } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
196 #endif
198 typedef struct _IMAGEHLP_MODULE64
200 DWORD SizeOfStruct;
201 DWORD64 BaseOfImage;
202 DWORD ImageSize;
203 DWORD TimeDateStamp;
204 DWORD CheckSum;
205 DWORD NumSyms;
206 SYM_TYPE SymType;
207 CHAR ModuleName[32];
208 CHAR ImageName[256];
209 CHAR LoadedImageName[256];
210 CHAR LoadedPdbName[256];
211 DWORD CVSig;
212 CHAR CVData[MAX_PATH*3];
213 DWORD PdbSig;
214 GUID PdbSig70;
215 DWORD PdbAge;
216 BOOL PdbUnmatched;
217 BOOL DbgUnmatched;
218 BOOL LineNumbers;
219 BOOL GlobalSymbols;
220 BOOL TypeInfo;
221 BOOL SourceIndexed;
222 BOOL Publics;
223 } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
225 typedef struct _IMAGEHLP_MODULEW64
227 DWORD SizeOfStruct;
228 DWORD64 BaseOfImage;
229 DWORD ImageSize;
230 DWORD TimeDateStamp;
231 DWORD CheckSum;
232 DWORD NumSyms;
233 SYM_TYPE SymType;
234 WCHAR ModuleName[32];
235 WCHAR ImageName[256];
236 WCHAR LoadedImageName[256];
237 WCHAR LoadedPdbName[256];
238 DWORD CVSig;
239 WCHAR CVData[MAX_PATH*3];
240 DWORD PdbSig;
241 GUID PdbSig70;
242 DWORD PdbAge;
243 BOOL PdbUnmatched;
244 BOOL DbgUnmatched;
245 BOOL LineNumbers;
246 BOOL GlobalSymbols;
247 BOOL TypeInfo;
248 BOOL SourceIndexed;
249 BOOL Publics;
250 } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
252 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
253 #define IMAGEHLP_LINE IMAGEHLP_LINE64
254 #define PIMAGEHLP_LINE PIMAGEHLP_LINE64
255 #define IMAGEHLP_LINEW IMAGEHLP_LINEW64
256 #define PIMAGEHLP_LINEW PIMAGEHLP_LINEW64
257 #else
258 typedef struct _IMAGEHLP_LINE
260 DWORD SizeOfStruct;
261 PVOID Key;
262 DWORD LineNumber;
263 PCHAR FileName;
264 DWORD Address;
265 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
267 typedef struct _IMAGEHLP_LINEW
269 DWORD SizeOfStruct;
270 PVOID Key;
271 DWORD LineNumber;
272 PWSTR FileName;
273 DWORD Address;
274 } IMAGEHLP_LINEW, *PIMAGEHLP_LINEW;
275 #endif
277 typedef struct _IMAGEHLP_LINE64
279 DWORD SizeOfStruct;
280 PVOID Key;
281 DWORD LineNumber;
282 PCHAR FileName;
283 DWORD64 Address;
284 } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
286 typedef struct _IMAGEHLP_LINEW64
288 DWORD SizeOfStruct;
289 PVOID Key;
290 DWORD LineNumber;
291 PWSTR FileName;
292 DWORD64 Address;
293 } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
295 typedef struct _SOURCEFILE
297 DWORD64 ModBase;
298 PCHAR FileName;
299 } SOURCEFILE, *PSOURCEFILE;
301 typedef struct _SOURCEFILEW
303 DWORD64 ModBase;
304 PWSTR FileName;
305 } SOURCEFILEW, *PSOURCEFILEW;
307 #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
308 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
309 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
310 #define CBA_SYMBOLS_UNLOADED 0x00000004
311 #define CBA_DUPLICATE_SYMBOL 0x00000005
312 #define CBA_READ_MEMORY 0x00000006
313 #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
314 #define CBA_SET_OPTIONS 0x00000008
315 #define CBA_EVENT 0x00000010
316 #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
317 #define CBA_DEBUG_INFO 0x10000000
319 typedef struct _IMAGEHLP_CBA_READ_MEMORY
321 DWORD64 addr;
322 PVOID buf;
323 DWORD bytes;
324 DWORD *bytesread;
325 } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY;
327 enum
329 sevInfo = 0,
330 sevProblem,
331 sevAttn,
332 sevFatal,
333 sevMax
336 #define EVENT_SRCSPEW_START 100
337 #define EVENT_SRCSPEW 100
338 #define EVENT_SRCSPEW_END 199
340 typedef struct _IMAGEHLP_CBA_EVENT
342 DWORD severity;
343 DWORD code;
344 PCHAR desc;
345 PVOID object;
346 } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT;
348 typedef struct _IMAGEHLP_CBA_EVENTW
350 DWORD severity;
351 DWORD code;
352 PCWSTR desc;
353 PVOID object;
354 } IMAGEHLP_CBA_EVENTW, *PIMAGEHLP_CBA_EVENTW;
356 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
357 #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
358 #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
359 #else
360 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD
362 DWORD SizeOfStruct;
363 DWORD BaseOfImage;
364 DWORD CheckSum;
365 DWORD TimeDateStamp;
366 CHAR FileName[MAX_PATH];
367 BOOLEAN Reparse;
368 HANDLE hFile;
369 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
370 #endif
372 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64
374 DWORD SizeOfStruct;
375 DWORD64 BaseOfImage;
376 DWORD CheckSum;
377 DWORD TimeDateStamp;
378 CHAR FileName[MAX_PATH];
379 BOOLEAN Reparse;
380 HANDLE hFile;
381 DWORD Flags;
382 } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
384 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64
386 DWORD SizeOfStruct;
387 DWORD64 BaseOfImage;
388 DWORD CheckSum;
389 DWORD TimeDateStamp;
390 WCHAR FileName[MAX_PATH + 1];
391 BOOLEAN Reparse;
392 HANDLE hFile;
393 DWORD Flags;
394 } IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64;
396 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
397 #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
398 #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
399 #else
400 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL
402 DWORD SizeOfStruct;
403 DWORD NumberOfDups;
404 PIMAGEHLP_SYMBOL Symbol;
405 DWORD SelectedSymbol;
406 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
407 #endif
409 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64
411 DWORD SizeOfStruct;
412 DWORD NumberOfDups;
413 PIMAGEHLP_SYMBOL64 Symbol;
414 DWORD SelectedSymbol;
415 } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64;
417 #define SYMOPT_CASE_INSENSITIVE 0x00000001
418 #define SYMOPT_UNDNAME 0x00000002
419 #define SYMOPT_DEFERRED_LOADS 0x00000004
420 #define SYMOPT_NO_CPP 0x00000008
421 #define SYMOPT_LOAD_LINES 0x00000010
422 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
423 #define SYMOPT_LOAD_ANYTHING 0x00000040
424 #define SYMOPT_IGNORE_CVREC 0x00000080
425 #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
426 #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
427 #define SYMOPT_EXACT_SYMBOLS 0x00000400
428 #define SYMOPT_WILD_UNDERSCORE 0x00000800
429 #define SYMOPT_USE_DEFAULTS 0x00001000
430 /* latest SDK defines:
431 #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
432 #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
434 #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
435 #define SYMOPT_PUBLICS_ONLY 0x00004000
436 #define SYMOPT_NO_PUBLICS 0x00008000
437 #define SYMOPT_AUTO_PUBLICS 0x00010000
438 #define SYMOPT_NO_IMAGE_SEARCH 0x00020000
439 #define SYMOPT_SECURE 0x00040000
440 #define SYMOPT_NO_PROMPTS 0x00080000
441 #define SYMOPT_OVERWRITE 0x00100000
442 #define SYMOPT_IGNORE_IMAGEDIR 0x00200000
444 #define SYMOPT_DEBUG 0x80000000
446 typedef struct _IMAGEHLP_STACK_FRAME
448 ULONG64 InstructionOffset;
449 ULONG64 ReturnOffset;
450 ULONG64 FrameOffset;
451 ULONG64 StackOffset;
452 ULONG64 BackingStoreOffset;
453 ULONG64 FuncTableEntry;
454 ULONG64 Params[4];
455 ULONG64 Reserved[5];
456 BOOL Virtual;
457 ULONG Reserved2;
458 } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
460 typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
462 #define DBHHEADER_DEBUGDIRS 0x1
463 typedef struct _DBGHELP_MODLOAD_DATA
465 DWORD ssize;
466 DWORD ssig;
467 PVOID data;
468 DWORD size;
469 DWORD flags;
470 } MODLOAD_DATA, *PMODLOAD_DATA;
472 /*************************
473 * MiniDUMP *
474 *************************/
476 #include <pshpack4.h>
477 /* DebugHelp */
479 #define MINIDUMP_SIGNATURE 0x504D444D /* 'MDMP' */
480 #define MINIDUMP_VERSION (42899)
482 typedef DWORD RVA;
483 typedef ULONG64 RVA64;
485 typedef enum _MINIDUMP_TYPE
487 MiniDumpNormal = 0x0000,
488 MiniDumpWithDataSegs = 0x0001,
489 MiniDumpWithFullMemory = 0x0002,
490 MiniDumpWithHandleData = 0x0004,
491 MiniDumpFilterMemory = 0x0008,
492 MiniDumpScanMemory = 0x0010,
493 MiniDumpWithUnloadedModules = 0x0020,
494 MiniDumpWithIndirectlyReferencedMemory = 0x0040,
495 MiniDumpFilterModulePaths = 0x0080,
496 MiniDumpWithProcessThreadData = 0x0100,
497 MiniDumpWithPrivateReadWriteMemory = 0x0200,
498 MiniDumpWithoutOptionalData = 0x0400,
499 MiniDumpWithFullMemoryInfo = 0x0800,
500 MiniDumpWithThreadInfo = 0x1000,
501 MiniDumpWithCodeSegs = 0x2000
502 } MINIDUMP_TYPE;
504 typedef enum _MINIDUMP_CALLBACK_TYPE
506 ModuleCallback,
507 ThreadCallback,
508 ThreadExCallback,
509 IncludeThreadCallback,
510 IncludeModuleCallback,
511 MemoryCallback,
512 } MINIDUMP_CALLBACK_TYPE;
514 typedef struct _MINIDUMP_THREAD_CALLBACK
516 ULONG ThreadId;
517 HANDLE ThreadHandle;
518 CONTEXT Context;
519 ULONG SizeOfContext;
520 ULONG64 StackBase;
521 ULONG64 StackEnd;
522 } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK;
524 typedef struct _MINIDUMP_THREAD_EX_CALLBACK
526 ULONG ThreadId;
527 HANDLE ThreadHandle;
528 CONTEXT Context;
529 ULONG SizeOfContext;
530 ULONG64 StackBase;
531 ULONG64 StackEnd;
532 ULONG64 BackingStoreBase;
533 ULONG64 BackingStoreEnd;
534 } MINIDUMP_THREAD_EX_CALLBACK, *PMINIDUMP_THREAD_EX_CALLBACK;
536 typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK
538 ULONG ThreadId;
539 } MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK;
541 typedef enum _THREAD_WRITE_FLAGS
543 ThreadWriteThread = 0x0001,
544 ThreadWriteStack = 0x0002,
545 ThreadWriteContext = 0x0004,
546 ThreadWriteBackingStore = 0x0008,
547 ThreadWriteInstructionWindow = 0x0010,
548 ThreadWriteThreadData = 0x0020,
549 ThreadWriteThreadInfo = 0x0040
550 } THREAD_WRITE_FLAGS;
552 typedef struct _MINIDUMP_MODULE_CALLBACK
554 PWCHAR FullPath;
555 ULONG64 BaseOfImage;
556 ULONG SizeOfImage;
557 ULONG CheckSum;
558 ULONG TimeDateStamp;
559 VS_FIXEDFILEINFO VersionInfo;
560 PVOID CvRecord;
561 ULONG SizeOfCvRecord;
562 PVOID MiscRecord;
563 ULONG SizeOfMiscRecord;
564 } MINIDUMP_MODULE_CALLBACK, *PMINIDUMP_MODULE_CALLBACK;
566 typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK
568 ULONG64 BaseOfImage;
569 } MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK;
571 typedef enum _MODULE_WRITE_FLAGS
573 ModuleWriteModule = 0x0001,
574 ModuleWriteDataSeg = 0x0002,
575 ModuleWriteMiscRecord = 0x0004,
576 ModuleWriteCvRecord = 0x0008,
577 ModuleReferencedByMemory = 0x0010,
578 ModuleWriteTlsData = 0x0020,
579 ModuleWriteCodeSegs = 0x0040,
580 } MODULE_WRITE_FLAGS;
582 typedef struct _MINIDUMP_CALLBACK_INPUT
584 ULONG ProcessId;
585 HANDLE ProcessHandle;
586 ULONG CallbackType;
587 union
589 MINIDUMP_THREAD_CALLBACK Thread;
590 MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
591 MINIDUMP_MODULE_CALLBACK Module;
592 MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
593 MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
594 } DUMMYUNIONNAME;
595 } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT;
597 typedef struct _MINIDUMP_CALLBACK_OUTPUT
599 union
601 ULONG ModuleWriteFlags;
602 ULONG ThreadWriteFlags;
603 struct
605 ULONG64 MemoryBase;
606 ULONG MemorySize;
607 } DUMMYSTRUCTNAME;
608 } DUMMYUNIONNAME;
609 } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
611 typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID, const PMINIDUMP_CALLBACK_INPUT, PMINIDUMP_CALLBACK_OUTPUT);
613 typedef struct _MINIDUMP_CALLBACK_INFORMATION
615 MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
616 void* CallbackParam;
617 } MINIDUMP_CALLBACK_INFORMATION, *PMINIDUMP_CALLBACK_INFORMATION;
619 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR
621 ULONG DataSize;
622 RVA Rva;
623 } MINIDUMP_LOCATION_DESCRIPTOR;
625 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64
627 ULONG64 DataSize;
628 RVA64 Rva;
629 } MINIDUMP_LOCATION_DESCRIPTOR64;
631 typedef struct _MINIDUMP_DIRECTORY
633 ULONG StreamType;
634 MINIDUMP_LOCATION_DESCRIPTOR Location;
635 } MINIDUMP_DIRECTORY, *PMINIDUMP_DIRECTORY;
637 typedef struct _MINIDUMP_EXCEPTION
639 ULONG ExceptionCode;
640 ULONG ExceptionFlags;
641 ULONG64 ExceptionRecord;
642 ULONG64 ExceptionAddress;
643 ULONG NumberParameters;
644 ULONG __unusedAlignment;
645 ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
646 } MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION;
648 typedef struct _MINIDUMP_EXCEPTION_INFORMATION
650 DWORD ThreadId;
651 PEXCEPTION_POINTERS ExceptionPointers;
652 BOOL ClientPointers;
653 } MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
655 typedef struct MINIDUMP_EXCEPTION_STREAM
657 ULONG ThreadId;
658 ULONG __alignment;
659 MINIDUMP_EXCEPTION ExceptionRecord;
660 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
661 } MINIDUMP_EXCEPTION_STREAM, *PMINIDUMP_EXCEPTION_STREAM;
663 typedef struct _MINIDUMP_HEADER
665 DWORD Signature;
666 DWORD Version;
667 DWORD NumberOfStreams;
668 RVA StreamDirectoryRva;
669 DWORD CheckSum;
670 union
672 DWORD Reserved;
673 DWORD TimeDateStamp;
674 } DUMMYUNIONNAME;
675 ULONG64 Flags;
676 } MINIDUMP_HEADER, *PMINIDUMP_HEADER;
678 typedef struct _MINIDUMP_MEMORY_DESCRIPTOR
680 ULONG64 StartOfMemoryRange;
681 MINIDUMP_LOCATION_DESCRIPTOR Memory;
682 } MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR;
684 typedef struct _MINIDUMP_MEMORY_LIST
686 ULONG NumberOfMemoryRanges;
687 MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges[1]; /* FIXME: 0-sized array not supported */
688 } MINIDUMP_MEMORY_LIST, *PMINIDUMP_MEMORY_LIST;
690 #define MINIDUMP_MISC1_PROCESS_ID 0x00000001
691 #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002
693 typedef struct _MINIDUMP_MISC_INFO
695 ULONG SizeOfInfo;
696 ULONG Flags1;
697 ULONG ProcessId;
698 ULONG ProcessCreateTime;
699 ULONG ProcessUserTime;
700 ULONG ProcessKernelTime;
701 } MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO;
703 typedef struct _MINIDUMP_MODULE
705 ULONG64 BaseOfImage;
706 ULONG SizeOfImage;
707 ULONG CheckSum;
708 ULONG TimeDateStamp;
709 RVA ModuleNameRva;
710 VS_FIXEDFILEINFO VersionInfo;
711 MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
712 MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
713 ULONG64 Reserved0;
714 ULONG64 Reserved1;
715 } MINIDUMP_MODULE, *PMINIDUMP_MODULE;
717 typedef struct _MINIDUMP_MODULE_LIST
719 ULONG NumberOfModules;
720 MINIDUMP_MODULE Modules[1]; /* FIXME: 0-sized array not supported */
721 } MINIDUMP_MODULE_LIST, *PMINIDUMP_MODULE_LIST;
723 typedef struct _MINIDUMP_STRING
725 ULONG Length;
726 WCHAR Buffer[1]; /* FIXME: O-sized array not supported */
727 } MINIDUMP_STRING, *PMINIDUMP_STRING;
729 typedef struct _MINIDUMP_SYSTEM_INFO
731 USHORT ProcessorArchitecture;
732 USHORT ProcessorLevel;
733 USHORT ProcessorRevision;
734 union
736 USHORT Reserved0;
737 struct
739 UCHAR NumberOfProcessors;
740 UCHAR ProductType;
741 } DUMMYSTRUCTNAME;
742 } DUMMYUNIONNAME;
744 ULONG MajorVersion;
745 ULONG MinorVersion;
746 ULONG BuildNumber;
747 ULONG PlatformId;
749 RVA CSDVersionRva;
750 union
752 ULONG Reserved1;
753 struct
755 USHORT SuiteMask;
756 USHORT Reserved2;
757 } DUMMYSTRUCTNAME;
758 } DUMMYUNIONNAME1;
759 union _CPU_INFORMATION
761 struct
763 ULONG VendorId[3];
764 ULONG VersionInformation;
765 ULONG FeatureInformation;
766 ULONG AMDExtendedCpuFeatures;
767 } X86CpuInfo;
768 struct
770 ULONG64 ProcessorFeatures[2];
771 } OtherCpuInfo;
772 } Cpu;
774 } MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO;
776 typedef struct _MINIDUMP_THREAD
778 ULONG ThreadId;
779 ULONG SuspendCount;
780 ULONG PriorityClass;
781 ULONG Priority;
782 ULONG64 Teb;
783 MINIDUMP_MEMORY_DESCRIPTOR Stack;
784 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
785 } MINIDUMP_THREAD, *PMINIDUMP_THREAD;
787 typedef struct _MINIDUMP_THREAD_LIST
789 ULONG NumberOfThreads;
790 MINIDUMP_THREAD Threads[1]; /* FIXME: no support of 0 sized array */
791 } MINIDUMP_THREAD_LIST, *PMINIDUMP_THREAD_LIST;
793 typedef struct _MINIDUMP_USER_STREAM
795 ULONG Type;
796 ULONG BufferSize;
797 void* Buffer;
798 } MINIDUMP_USER_STREAM, *PMINIDUMP_USER_STREAM;
800 typedef struct _MINIDUMP_USER_STREAM_INFORMATION
802 ULONG UserStreamCount;
803 PMINIDUMP_USER_STREAM UserStreamArray;
804 } MINIDUMP_USER_STREAM_INFORMATION, *PMINIDUMP_USER_STREAM_INFORMATION;
806 typedef enum _MINIDUMP_STREAM_TYPE
808 UnusedStream = 0,
809 ReservedStream0 = 1,
810 ReservedStream1 = 2,
811 ThreadListStream = 3,
812 ModuleListStream = 4,
813 MemoryListStream = 5,
814 ExceptionStream = 6,
815 SystemInfoStream = 7,
816 ThreadExListStream = 8,
817 Memory64ListStream = 9,
818 CommentStreamA = 10,
819 CommentStreamW = 11,
820 HandleDataStream = 12,
821 FunctionTableStream = 13,
822 UnloadedModuleListStream = 14,
823 MiscInfoStream = 15,
824 MemoryInfoListStream = 16,
825 ThreadInfoListStream = 17,
827 LastReservedStream = 0xffff
828 } MINIDUMP_STREAM_TYPE;
830 BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
831 const PMINIDUMP_EXCEPTION_INFORMATION,
832 const PMINIDUMP_USER_STREAM_INFORMATION,
833 const PMINIDUMP_CALLBACK_INFORMATION);
834 BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*,
835 ULONG*);
837 #include <poppack.h>
839 /*************************
840 * MODULE handling *
841 *************************/
843 /* flags for SymLoadModuleEx */
844 #define SLMFLAG_VIRTUAL 0x1
845 #define SLMFLAG_NO_SYMBOLS 0x4
847 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
848 BOOL WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID);
849 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR, DWORD64, ULONG, PVOID);
850 BOOL WINAPI EnumerateLoadedModulesW64(HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID);
851 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR, DWORD64, PVOID);
852 BOOL WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID);
853 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR, DWORD64, PVOID);
854 BOOL WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID);
855 BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64);
856 BOOL WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64);
857 DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64);
858 DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD);
859 DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD,
860 PMODLOAD_DATA, DWORD);
861 DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD,
862 PMODLOAD_DATA, DWORD);
863 BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64);
865 /*************************
866 * Symbol Handling *
867 *************************/
869 #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
870 #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER /* 0x08 */
871 #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL /* 0x10 */
872 #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL /* 0x20 */
873 #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER /* 0x40 */
874 #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL /* 0x80 */
875 #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT /* 0x100 */
876 #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION /* 0x800 */
878 #define SYMFLAG_VALUEPRESENT 0x00000001
879 #define SYMFLAG_REGISTER 0x00000008
880 #define SYMFLAG_REGREL 0x00000010
881 #define SYMFLAG_FRAMEREL 0x00000020
882 #define SYMFLAG_PARAMETER 0x00000040
883 #define SYMFLAG_LOCAL 0x00000080
884 #define SYMFLAG_CONSTANT 0x00000100
885 #define SYMFLAG_EXPORT 0x00000200
886 #define SYMFLAG_FORWARDER 0x00000400
887 #define SYMFLAG_FUNCTION 0x00000800
888 #define SYMFLAG_VIRTUAL 0x00001000
889 #define SYMFLAG_THUNK 0x00002000
890 #define SYMFLAG_TLSREL 0x00004000
891 #define SYMFLAG_SLOT 0x00008000
893 #define MAX_SYM_NAME 2000
895 typedef struct _SYMBOL_INFO
897 ULONG SizeOfStruct;
898 ULONG TypeIndex;
899 ULONG64 Reserved[2];
900 ULONG info; /* sdk states info, while MSDN says it's Index... */
901 ULONG Size;
902 ULONG64 ModBase;
903 ULONG Flags;
904 ULONG64 Value;
905 ULONG64 Address;
906 ULONG Register;
907 ULONG Scope;
908 ULONG Tag;
909 ULONG NameLen;
910 ULONG MaxNameLen;
911 CHAR Name[1];
912 } SYMBOL_INFO, *PSYMBOL_INFO;
914 typedef struct _SYMBOL_INFOW
916 ULONG SizeOfStruct;
917 ULONG TypeIndex;
918 ULONG64 Reserved[2];
919 ULONG Index;
920 ULONG Size;
921 ULONG64 ModBase;
922 ULONG Flags;
923 ULONG64 Value;
924 ULONG64 Address;
925 ULONG Register;
926 ULONG Scope;
927 ULONG Tag;
928 ULONG NameLen;
929 ULONG MaxNameLen;
930 WCHAR Name[1];
931 } SYMBOL_INFOW, *PSYMBOL_INFOW;
933 typedef struct _SYMBOL_INFO_PACKAGE
935 SYMBOL_INFO si;
936 CHAR name[MAX_SYM_NAME+1];
937 } SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE;
939 typedef struct _SYMBOL_INFO_PACKAGEW
941 SYMBOL_INFOW si;
942 WCHAR name[MAX_SYM_NAME+1];
943 } SYMBOL_INFO_PACKAGEW, *PSYMBOL_INFO_PACKAGEW;
945 typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO
947 TI_GET_SYMTAG,
948 TI_GET_SYMNAME,
949 TI_GET_LENGTH,
950 TI_GET_TYPE,
951 TI_GET_TYPEID,
952 TI_GET_BASETYPE,
953 TI_GET_ARRAYINDEXTYPEID,
954 TI_FINDCHILDREN,
955 TI_GET_DATAKIND,
956 TI_GET_ADDRESSOFFSET,
957 TI_GET_OFFSET,
958 TI_GET_VALUE,
959 TI_GET_COUNT,
960 TI_GET_CHILDRENCOUNT,
961 TI_GET_BITPOSITION,
962 TI_GET_VIRTUALBASECLASS,
963 TI_GET_VIRTUALTABLESHAPEID,
964 TI_GET_VIRTUALBASEPOINTEROFFSET,
965 TI_GET_CLASSPARENTID,
966 TI_GET_NESTED,
967 TI_GET_SYMINDEX,
968 TI_GET_LEXICALPARENT,
969 TI_GET_ADDRESS,
970 TI_GET_THISADJUST,
971 TI_GET_UDTKIND,
972 TI_IS_EQUIV_TO,
973 TI_GET_CALLING_CONVENTION,
974 } IMAGEHLP_SYMBOL_TYPE_INFO;
976 #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001
977 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002
978 typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS
980 ULONG SizeOfStruct;
981 ULONG Flags;
982 ULONG NumIds;
983 PULONG TypeIds;
984 ULONG64 TagFilter;
985 ULONG NumReqs;
986 IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds;
987 PULONG_PTR ReqOffsets;
988 PULONG ReqSizes;
989 ULONG_PTR ReqStride;
990 ULONG_PTR BufferSize;
991 PVOID Buffer;
992 ULONG EntriesMatched;
993 ULONG EntriesFilled;
994 ULONG64 TagsFound;
995 ULONG64 AllReqsValid;
996 ULONG NumReqsValid;
997 PULONG64 ReqsValid;
998 } IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS;
1000 typedef struct _TI_FINDCHILDREN_PARAMS
1002 ULONG Count;
1003 ULONG Start;
1004 ULONG ChildId[1];
1005 } TI_FINDCHILDREN_PARAMS;
1007 #define UNDNAME_COMPLETE (0x0000)
1008 #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)
1009 #define UNDNAME_NO_MS_KEYWORDS (0x0002)
1010 #define UNDNAME_NO_FUNCTION_RETURNS (0x0004)
1011 #define UNDNAME_NO_ALLOCATION_MODEL (0x0008)
1012 #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)
1013 #define UNDNAME_NO_MS_THISTYPE (0x0020)
1014 #define UNDNAME_NO_CV_THISTYPE (0x0040)
1015 #define UNDNAME_NO_THISTYPE (0x0060)
1016 #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)
1017 #define UNDNAME_NO_THROW_SIGNATURES (0x0100)
1018 #define UNDNAME_NO_MEMBER_TYPE (0x0200)
1019 #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)
1020 #define UNDNAME_32_BIT_DECODE (0x0800)
1021 #define UNDNAME_NAME_ONLY (0x1000)
1022 #define UNDNAME_NO_ARGUMENTS (0x2000)
1023 #define UNDNAME_NO_SPECIAL_SYMS (0x4000)
1025 #define SYMSEARCH_MASKOBJS 0x01
1026 #define SYMSEARCH_RECURSE 0x02
1027 #define SYMSEARCH_GLOBALSONLY 0x04
1029 BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID);
1030 BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS);
1031 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID);
1032 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID);
1033 BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
1034 BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
1035 BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*);
1036 BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*);
1037 BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO);
1038 BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW);
1039 BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO);
1040 BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW);
1041 BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64);
1042 BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64);
1043 BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO);
1044 BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW);
1045 BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64);
1046 BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64);
1047 BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64);
1048 BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64);
1049 BOOL WINAPI SymEnumSym(HANDLE,ULONG64,PSYM_ENUMERATESYMBOLS_CALLBACK,PVOID);
1050 BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK,
1051 PVOID);
1052 BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW,
1053 PVOID);
1054 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
1055 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID);
1056 BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID);
1057 BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID);
1058 BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
1059 BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
1060 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64);
1061 BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
1062 BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
1063 BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD);
1064 BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
1065 BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL);
1066 BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL);
1067 BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD);
1068 BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD);
1069 DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD);
1070 DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD);
1071 BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
1072 BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
1073 BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
1074 BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
1075 BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD);
1076 BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD);
1077 BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD);
1078 BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD);
1080 /*************************
1081 * Source Files *
1082 *************************/
1083 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE, PVOID);
1084 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW, PVOID);
1086 BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, PSYM_ENUMSOURCEFILES_CALLBACK,
1087 PVOID);
1088 BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID);
1089 BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
1090 BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64);
1091 BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64);
1092 BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64);
1093 BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64);
1094 BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64);
1095 BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64);
1096 BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64);
1097 ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG);
1098 BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD);
1099 BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD);
1100 BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID*, DWORD*);
1101 BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*);
1102 BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD);
1103 BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD);
1104 BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD);
1105 BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD);
1107 typedef struct _SRCCODEINFO
1109 DWORD SizeOfStruct;
1110 PVOID Key;
1111 DWORD64 ModBase;
1112 CHAR Obj[MAX_PATH+1];
1113 CHAR FileName[MAX_PATH+1];
1114 DWORD LineNumber;
1115 DWORD64 Address;
1116 } SRCCODEINFO, *PSRCCODEINFO;
1118 typedef struct _SRCCODEINFOW
1120 DWORD SizeOfStruct;
1121 PVOID Key;
1122 DWORD64 ModBase;
1123 WCHAR Obj[MAX_PATH+1];
1124 WCHAR FileName[MAX_PATH+1];
1125 DWORD LineNumber;
1126 DWORD64 Address;
1127 } SRCCODEINFOW, *PSRCCODEINFOW;
1129 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID);
1130 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW, PVOID);
1131 BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID);
1132 BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID);
1133 BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID);
1134 BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID);
1136 /*************************
1137 * File & image handling *
1138 *************************/
1139 BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL);
1140 BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL);
1141 BOOL WINAPI SymCleanup(HANDLE);
1143 HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR);
1144 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
1145 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
1146 HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
1147 HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
1148 HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
1149 HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
1150 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR, PVOID);
1151 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR, PVOID);
1152 BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
1153 PSTR, PFINDFILEINPATHCALLBACK, PVOID);
1154 BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
1155 PSTR, PFINDFILEINPATHCALLBACK, PVOID);
1156 BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD,
1157 PWSTR, PFINDFILEINPATHCALLBACKW, PVOID);
1158 HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR);
1159 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
1160 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
1161 HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
1162 HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
1163 HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
1164 HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
1165 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID);
1166 PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG,
1167 PIMAGE_SECTION_HEADER *);
1168 PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG);
1169 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG);
1170 PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER*);
1171 BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD);
1172 BOOL WINAPI SymGetSearchPathW(HANDLE, PWSTR, DWORD);
1173 BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR);
1174 BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR);
1175 DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE);
1176 BOOL WINAPI MakeSureDirectoryPathExists(PCSTR);
1177 BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR);
1178 BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR);
1179 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(PCSTR, PVOID);
1180 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(PCWSTR, PVOID);
1181 BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID);
1182 BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID);
1183 BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR*, PSTR*);
1184 BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR*, PWSTR*);
1185 PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR);
1186 PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR);
1187 PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t);
1188 PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t);
1189 #define hdBase 0
1190 #define hdSym 1
1191 #define hdSrc 2
1192 #define hdMax 3
1194 /*************************
1195 * Context management *
1196 *************************/
1197 BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT);
1200 /*************************
1201 * Stack management *
1202 *************************/
1204 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1205 #define KDHELP KDHELP64
1206 #define PKDHELP PKDHELP64
1207 #else
1208 typedef struct _KDHELP
1210 DWORD Thread;
1211 DWORD ThCallbackStack;
1212 DWORD NextCallback;
1213 DWORD FramePointer;
1214 DWORD KiCallUserMode;
1215 DWORD KeUserCallbackDispatcher;
1216 DWORD SystemRangeStart;
1217 } KDHELP, *PKDHELP;
1218 #endif
1220 typedef struct _KDHELP64
1222 DWORD64 Thread;
1223 DWORD ThCallbackStack;
1224 DWORD ThCallbackBStore;
1225 DWORD NextCallback;
1226 DWORD FramePointer;
1227 DWORD64 KiCallUserMode;
1228 DWORD64 KeUserCallbackDispatcher;
1229 DWORD64 SystemRangeStart;
1230 DWORD64 Reserved[8];
1231 } KDHELP64, *PKDHELP64;
1233 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1234 #define STACKFRAME STACKFRAME64
1235 #define LPSTACKFRAME LPSTACKFRAME64
1236 #else
1237 typedef struct _STACKFRAME
1239 ADDRESS AddrPC;
1240 ADDRESS AddrReturn;
1241 ADDRESS AddrFrame;
1242 ADDRESS AddrStack;
1243 PVOID FuncTableEntry;
1244 DWORD Params[4];
1245 BOOL Far;
1246 BOOL Virtual;
1247 DWORD Reserved[3];
1248 KDHELP KdHelp;
1249 ADDRESS AddrBStore;
1250 } STACKFRAME, *LPSTACKFRAME;
1251 #endif
1253 typedef struct _STACKFRAME64
1255 ADDRESS64 AddrPC;
1256 ADDRESS64 AddrReturn;
1257 ADDRESS64 AddrFrame;
1258 ADDRESS64 AddrStack;
1259 ADDRESS64 AddrBStore;
1260 PVOID FuncTableEntry;
1261 DWORD64 Params[4];
1262 BOOL Far;
1263 BOOL Virtual;
1264 DWORD64 Reserved[3];
1265 KDHELP64 KdHelp;
1266 } STACKFRAME64, *LPSTACKFRAME64;
1268 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)
1269 (HANDLE, DWORD64, PVOID, DWORD, PDWORD);
1270 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE, DWORD64);
1271 typedef DWORD64 (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(HANDLE, DWORD64);
1272 typedef DWORD64 (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE, HANDLE, LPADDRESS64);
1273 BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID,
1274 PREAD_PROCESS_MEMORY_ROUTINE64,
1275 PFUNCTION_TABLE_ACCESS_ROUTINE64,
1276 PGET_MODULE_BASE_ROUTINE64,
1277 PTRANSLATE_ADDRESS_ROUTINE64);
1279 PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64);
1281 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64);
1283 BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64);
1285 /*************************
1286 * Version, global stuff *
1287 *************************/
1289 #define API_VERSION_NUMBER 9
1291 typedef struct API_VERSION
1293 USHORT MajorVersion;
1294 USHORT MinorVersion;
1295 USHORT Revision;
1296 USHORT Reserved;
1297 } API_VERSION, *LPAPI_VERSION;
1299 LPAPI_VERSION WINAPI ImagehlpApiVersion(void);
1300 LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION);
1302 typedef struct _IMAGE_DEBUG_INFORMATION
1304 LIST_ENTRY List;
1305 DWORD ReservedSize;
1306 PVOID ReservedMappedBase;
1307 USHORT ReservedMachine;
1308 USHORT ReservedCharacteristics;
1309 DWORD ReservedCheckSum;
1310 DWORD ImageBase;
1311 DWORD SizeOfImage;
1312 DWORD ReservedNumberOfSections;
1313 PIMAGE_SECTION_HEADER ReservedSections;
1314 DWORD ReservedExportedNamesSize;
1315 PSTR ReservedExportedNames;
1316 DWORD ReservedNumberOfFunctionTableEntries;
1317 PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
1318 DWORD ReservedLowestFunctionStartingAddress;
1319 DWORD ReservedHighestFunctionEndingAddress;
1320 DWORD ReservedNumberOfFpoTableEntries;
1321 PFPO_DATA ReservedFpoTableEntries;
1322 DWORD SizeOfCoffSymbols;
1323 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
1324 DWORD ReservedSizeOfCodeViewSymbols;
1325 PVOID ReservedCodeViewSymbols;
1326 PSTR ImageFilePath;
1327 PSTR ImageFileName;
1328 PSTR ReservedDebugFilePath;
1329 DWORD ReservedTimeDateStamp;
1330 BOOL ReservedRomImage;
1331 PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
1332 DWORD ReservedNumberOfDebugDirectories;
1333 DWORD ReservedOriginalFunctionTableBaseAddress;
1334 DWORD Reserved[ 2 ];
1335 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
1338 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG);
1340 BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
1342 DWORD WINAPI SymGetOptions(void);
1343 DWORD WINAPI SymSetOptions(DWORD);
1345 BOOL WINAPI SymSetParentWindow(HWND);
1347 /*************************
1348 * Version, global stuff *
1349 *************************/
1351 typedef BOOL (WINAPI* PSYMBOLSERVERPROC)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR);
1352 typedef BOOL (WINAPI* PSYMBOLSERVERPROCA)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR);
1353 typedef BOOL (WINAPI* PSYMBOLSERVERPROCW)(PCWSTR, PCWSTR, PVOID, DWORD, DWORD, PWSTR);
1354 typedef BOOL (WINAPI* PSYMBOLSERVEROPENPROC)(void);
1355 typedef BOOL (WINAPI* PSYMBOLSERVERCLOSEPROC)(void);
1356 typedef BOOL (WINAPI* PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64);
1357 typedef BOOL (CALLBACK* PSYMBOLSERVERCALLBACKPROC)(UINT_PTR, ULONG64, ULONG64);
1358 typedef UINT_PTR (WINAPI* PSYMBOLSERVERGETOPTIONSPROC)(void);
1359 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROC)(PCSTR);
1360 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCA)(PCSTR);
1361 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCW)(PCWSTR);
1363 #define SSRVOPT_CALLBACK 0x0001
1364 #define SSRVOPT_DWORD 0x0002
1365 #define SSRVOPT_DWORDPTR 0x0004
1366 #define SSRVOPT_GUIDPTR 0x0008
1367 #define SSRVOPT_OLDGUIDPTR 0x0010
1368 #define SSRVOPT_UNATTENDED 0x0020
1369 #define SSRVOPT_NOCOPY 0x0040
1370 #define SSRVOPT_PARENTWIN 0x0080
1371 #define SSRVOPT_PARAMTYPE 0x0100
1372 #define SSRVOPT_SECURE 0x0200
1373 #define SSRVOPT_TRACE 0x0400
1374 #define SSRVOPT_SETCONTEXT 0x0800
1375 #define SSRVOPT_PROXY 0x1000
1376 #define SSRVOPT_DOWNSTREAM_STORE 0x2000
1377 #define SSRVOPT_RESET ((ULONG_PTR)-1)
1379 #define SSRVACTION_TRACE 1
1380 #define SSRVACTION_QUERYCANCEL 2
1381 #define SSRVACTION_EVENT 3
1383 /* 32-bit functions */
1385 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1387 #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64
1388 #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
1389 #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
1390 #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
1391 #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
1392 #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
1393 #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64
1394 #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
1395 #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACKW64
1396 #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
1398 #define EnumerateLoadedModules EnumerateLoadedModules64
1399 #define StackWalk StackWalk64
1400 #define SymEnumerateModules SymEnumerateModules64
1401 #define SymEnumerateSymbols SymEnumerateSymbols64
1402 #define SymEnumerateSymbolsW SymEnumerateSymbolsW64
1403 #define SymFunctionTableAccess SymFunctionTableAccess64
1404 #define SymGetLineFromAddr SymGetLineFromAddr64
1405 #define SymGetLineFromAddrW SymGetLineFromAddrW64
1406 #define SymGetLineFromName SymGetLineFromName64
1407 #define SymGetLineNext SymGetLineNext64
1408 #define SymGetLineNextW SymGetLineNextW64
1409 #define SymGetLinePrev SymGetLinePrev64
1410 #define SymGetLinePrevW SymGetLinePrevW64
1411 #define SymGetModuleBase SymGetModuleBase64
1412 #define SymGetModuleInfo SymGetModuleInfo64
1413 #define SymGetModuleInfoW SymGetModuleInfoW64
1414 #define SymGetSymFromAddr SymGetSymFromAddr64
1415 #define SymGetSymFromName SymGetSymFromName64
1416 #define SymGetSymNext SymGetSymNext64
1417 #define SymGetSymNextW SymGetSymNextW64
1418 #define SymGetSymPrev SymGetSymPrev64
1419 #define SymGetSymPrevW SymGetSymPrevW64
1420 #define SymLoadModule SymLoadModule64
1421 #define SymRegisterCallback SymRegisterCallback64
1422 #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
1423 #define SymUnDName SymUnDName64
1424 #define SymUnloadModule SymUnloadModule64
1426 #else
1428 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
1429 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD);
1430 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(HANDLE, DWORD);
1431 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE, DWORD, PVOID, DWORD, PDWORD);
1432 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR, ULONG, PVOID);
1433 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
1434 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, ULONG, ULONG, PVOID);
1435 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID);
1436 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID);
1437 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE, HANDLE, LPADDRESS);
1439 BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID);
1440 BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID, PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE);
1441 BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID);
1442 BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID);
1443 BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID);
1444 PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD);
1445 BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
1446 BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW);
1447 BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE);
1448 BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE);
1449 BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW);
1450 BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE);
1451 BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW);
1452 DWORD WINAPI SymGetModuleBase(HANDLE, DWORD);
1453 BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE);
1454 BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
1455 BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL);
1456 BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL);
1457 BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL);
1458 BOOL WINAPI SymGetSymNextW(HANDLE, PIMAGEHLP_SYMBOLW);
1459 BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL);
1460 BOOL WINAPI SymGetSymPrevW(HANDLE, PIMAGEHLP_SYMBOLW);
1461 DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD);
1462 BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID);
1463 BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID);
1464 BOOL WINAPI SymRefreshModuleList(HANDLE);
1465 BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
1466 BOOL WINAPI SymUnloadModule(HANDLE, DWORD);
1468 #endif
1470 #ifdef __cplusplus
1471 } /* extern "C" */
1472 #endif /* defined(__cplusplus) */
1474 #endif /* __WINE_DBGHELP_H */