push eb25bf65c4616aa55a810ed5c29198b1a080b208
[wine/hacks.git] / include / dbghelp.h
blob6f9e8807f368dc41d17b717fa8aec9b06c4674c7
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 PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
119 #else
120 typedef struct _IMAGEHLP_SYMBOL
122 DWORD SizeOfStruct;
123 DWORD Address;
124 DWORD Size;
125 DWORD Flags;
126 DWORD MaxNameLength;
127 CHAR Name[1];
128 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
129 #endif
131 typedef struct _IMAGEHLP_SYMBOL64
133 DWORD SizeOfStruct;
134 DWORD64 Address;
135 DWORD Size;
136 DWORD Flags;
137 DWORD MaxNameLength;
138 CHAR Name[1];
139 } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
141 typedef struct _IMAGEHLP_SYMBOLW64
143 DWORD SizeOfStruct;
144 DWORD64 Address;
145 DWORD Size;
146 DWORD Flags;
147 DWORD MaxNameLength;
148 WCHAR Name[1];
149 } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64;
151 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
152 #define IMAGEHLP_MODULE IMAGEHLP_MODULE64
153 #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
154 #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
155 #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
156 #else
157 typedef struct _IMAGEHLP_MODULE
159 DWORD SizeOfStruct;
160 DWORD BaseOfImage;
161 DWORD ImageSize;
162 DWORD TimeDateStamp;
163 DWORD CheckSum;
164 DWORD NumSyms;
165 SYM_TYPE SymType;
166 CHAR ModuleName[32];
167 CHAR ImageName[256];
168 CHAR LoadedImageName[256];
169 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
171 typedef struct _IMAGEHLP_MODULEW
173 DWORD SizeOfStruct;
174 DWORD BaseOfImage;
175 DWORD ImageSize;
176 DWORD TimeDateStamp;
177 DWORD CheckSum;
178 DWORD NumSyms;
179 SYM_TYPE SymType;
180 WCHAR ModuleName[32];
181 WCHAR ImageName[256];
182 WCHAR LoadedImageName[256];
183 } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
184 #endif
186 typedef struct _IMAGEHLP_MODULE64
188 DWORD SizeOfStruct;
189 DWORD64 BaseOfImage;
190 DWORD ImageSize;
191 DWORD TimeDateStamp;
192 DWORD CheckSum;
193 DWORD NumSyms;
194 SYM_TYPE SymType;
195 CHAR ModuleName[32];
196 CHAR ImageName[256];
197 CHAR LoadedImageName[256];
198 CHAR LoadedPdbName[256];
199 DWORD CVSig;
200 CHAR CVData[MAX_PATH*3];
201 DWORD PdbSig;
202 GUID PdbSig70;
203 DWORD PdbAge;
204 BOOL PdbUnmatched;
205 BOOL DbgUnmatched;
206 BOOL LineNumbers;
207 BOOL GlobalSymbols;
208 BOOL TypeInfo;
209 BOOL SourceIndexed;
210 BOOL Publics;
211 } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
213 typedef struct _IMAGEHLP_MODULEW64
215 DWORD SizeOfStruct;
216 DWORD64 BaseOfImage;
217 DWORD ImageSize;
218 DWORD TimeDateStamp;
219 DWORD CheckSum;
220 DWORD NumSyms;
221 SYM_TYPE SymType;
222 WCHAR ModuleName[32];
223 WCHAR ImageName[256];
224 WCHAR LoadedImageName[256];
225 WCHAR LoadedPdbName[256];
226 DWORD CVSig;
227 WCHAR CVData[MAX_PATH*3];
228 DWORD PdbSig;
229 GUID PdbSig70;
230 DWORD PdbAge;
231 BOOL PdbUnmatched;
232 BOOL DbgUnmatched;
233 BOOL LineNumbers;
234 BOOL GlobalSymbols;
235 BOOL TypeInfo;
236 BOOL SourceIndexed;
237 BOOL Publics;
238 } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
240 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
241 #define IMAGEHLP_LINE IMAGEHLP_LINE64
242 #define PIMAGEHLP_LINE PIMAGEHLP_LINE64
243 #define IMAGEHLP_LINEW IMAGEHLP_LINEW64
244 #define PIMAGEHLP_LINEW PIMAGEHLP_LINEW64
245 #else
246 typedef struct _IMAGEHLP_LINE
248 DWORD SizeOfStruct;
249 PVOID Key;
250 DWORD LineNumber;
251 PCHAR FileName;
252 DWORD Address;
253 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
255 typedef struct _IMAGEHLP_LINEW
257 DWORD SizeOfStruct;
258 PVOID Key;
259 DWORD LineNumber;
260 PWSTR FileName;
261 DWORD Address;
262 } IMAGEHLP_LINEW, *PIMAGEHLP_LINEW;
263 #endif
265 typedef struct _IMAGEHLP_LINE64
267 DWORD SizeOfStruct;
268 PVOID Key;
269 DWORD LineNumber;
270 PCHAR FileName;
271 DWORD64 Address;
272 } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
274 typedef struct _IMAGEHLP_LINEW64
276 DWORD SizeOfStruct;
277 PVOID Key;
278 DWORD LineNumber;
279 PWSTR FileName;
280 DWORD64 Address;
281 } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
283 typedef struct _SOURCEFILE
285 DWORD64 ModBase;
286 PCHAR FileName;
287 } SOURCEFILE, *PSOURCEFILE;
289 typedef struct _SOURCEFILEW
291 DWORD64 ModBase;
292 PWSTR FileName;
293 } SOURCEFILEW, *PSOURCEFILEW;
295 #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
296 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
297 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
298 #define CBA_SYMBOLS_UNLOADED 0x00000004
299 #define CBA_DUPLICATE_SYMBOL 0x00000005
300 #define CBA_READ_MEMORY 0x00000006
301 #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
302 #define CBA_SET_OPTIONS 0x00000008
303 #define CBA_EVENT 0x00000010
304 #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
305 #define CBA_DEBUG_INFO 0x10000000
307 typedef struct _IMAGEHLP_CBA_READ_MEMORY
309 DWORD64 addr;
310 PVOID buf;
311 DWORD bytes;
312 DWORD *bytesread;
313 } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY;
315 enum
317 sevInfo = 0,
318 sevProblem,
319 sevAttn,
320 sevFatal,
321 sevMax
324 #define EVENT_SRCSPEW_START 100
325 #define EVENT_SRCSPEW 100
326 #define EVENT_SRCSPEW_END 199
328 typedef struct _IMAGEHLP_CBA_EVENT
330 DWORD severity;
331 DWORD code;
332 PCHAR desc;
333 PVOID object;
334 } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT;
336 typedef struct _IMAGEHLP_CBA_EVENTW
338 DWORD severity;
339 DWORD code;
340 PCWSTR desc;
341 PVOID object;
342 } IMAGEHLP_CBA_EVENTW, *PIMAGEHLP_CBA_EVENTW;
344 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
345 #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
346 #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
347 #else
348 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD
350 DWORD SizeOfStruct;
351 DWORD BaseOfImage;
352 DWORD CheckSum;
353 DWORD TimeDateStamp;
354 CHAR FileName[MAX_PATH];
355 BOOLEAN Reparse;
356 HANDLE hFile;
357 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
358 #endif
360 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64
362 DWORD SizeOfStruct;
363 DWORD64 BaseOfImage;
364 DWORD CheckSum;
365 DWORD TimeDateStamp;
366 CHAR FileName[MAX_PATH];
367 BOOLEAN Reparse;
368 HANDLE hFile;
369 DWORD Flags;
370 } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
372 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64
374 DWORD SizeOfStruct;
375 DWORD64 BaseOfImage;
376 DWORD CheckSum;
377 DWORD TimeDateStamp;
378 WCHAR FileName[MAX_PATH + 1];
379 BOOLEAN Reparse;
380 HANDLE hFile;
381 DWORD Flags;
382 } IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64;
384 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
385 #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
386 #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
387 #else
388 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL
390 DWORD SizeOfStruct;
391 DWORD NumberOfDups;
392 PIMAGEHLP_SYMBOL Symbol;
393 DWORD SelectedSymbol;
394 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
395 #endif
397 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64
399 DWORD SizeOfStruct;
400 DWORD NumberOfDups;
401 PIMAGEHLP_SYMBOL64 Symbol;
402 DWORD SelectedSymbol;
403 } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64;
405 #define SYMOPT_CASE_INSENSITIVE 0x00000001
406 #define SYMOPT_UNDNAME 0x00000002
407 #define SYMOPT_DEFERRED_LOADS 0x00000004
408 #define SYMOPT_NO_CPP 0x00000008
409 #define SYMOPT_LOAD_LINES 0x00000010
410 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
411 #define SYMOPT_LOAD_ANYTHING 0x00000040
412 #define SYMOPT_IGNORE_CVREC 0x00000080
413 #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
414 #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
415 #define SYMOPT_EXACT_SYMBOLS 0x00000400
416 #define SYMOPT_WILD_UNDERSCORE 0x00000800
417 #define SYMOPT_USE_DEFAULTS 0x00001000
418 /* latest SDK defines:
419 #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
420 #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
422 #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
423 #define SYMOPT_PUBLICS_ONLY 0x00004000
424 #define SYMOPT_NO_PUBLICS 0x00008000
425 #define SYMOPT_AUTO_PUBLICS 0x00010000
426 #define SYMOPT_NO_IMAGE_SEARCH 0x00020000
427 #define SYMOPT_SECURE 0x00040000
428 #define SYMOPT_NO_PROMPTS 0x00080000
429 #define SYMOPT_OVERWRITE 0x00100000
430 #define SYMOPT_IGNORE_IMAGEDIR 0x00200000
432 #define SYMOPT_DEBUG 0x80000000
434 typedef struct _IMAGEHLP_STACK_FRAME
436 ULONG64 InstructionOffset;
437 ULONG64 ReturnOffset;
438 ULONG64 FrameOffset;
439 ULONG64 StackOffset;
440 ULONG64 BackingStoreOffset;
441 ULONG64 FuncTableEntry;
442 ULONG64 Params[4];
443 ULONG64 Reserved[5];
444 BOOL Virtual;
445 ULONG Reserved2;
446 } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
448 typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
450 #define DBHHEADER_DEBUGDIRS 0x1
451 typedef struct _DBGHELP_MODLOAD_DATA
453 DWORD ssize;
454 DWORD ssig;
455 PVOID data;
456 DWORD size;
457 DWORD flags;
458 } MODLOAD_DATA, *PMODLOAD_DATA;
460 /*************************
461 * MiniDUMP *
462 *************************/
464 #include <pshpack4.h>
465 /* DebugHelp */
467 #define MINIDUMP_SIGNATURE 0x504D444D /* 'MDMP' */
468 #define MINIDUMP_VERSION (42899)
470 typedef DWORD RVA;
471 typedef ULONG64 RVA64;
473 typedef enum _MINIDUMP_TYPE
475 MiniDumpNormal = 0x0000,
476 MiniDumpWithDataSegs = 0x0001,
477 MiniDumpWithFullMemory = 0x0002,
478 MiniDumpWithHandleData = 0x0004,
479 MiniDumpFilterMemory = 0x0008,
480 MiniDumpScanMemory = 0x0010,
481 MiniDumpWithUnloadedModules = 0x0020,
482 MiniDumpWithIndirectlyReferencedMemory = 0x0040,
483 MiniDumpFilterModulePaths = 0x0080,
484 MiniDumpWithProcessThreadData = 0x0100,
485 MiniDumpWithPrivateReadWriteMemory = 0x0200,
486 MiniDumpWithoutOptionalData = 0x0400,
487 MiniDumpWithFullMemoryInfo = 0x0800,
488 MiniDumpWithThreadInfo = 0x1000,
489 MiniDumpWithCodeSegs = 0x2000
490 } MINIDUMP_TYPE;
492 typedef enum _MINIDUMP_CALLBACK_TYPE
494 ModuleCallback,
495 ThreadCallback,
496 ThreadExCallback,
497 IncludeThreadCallback,
498 IncludeModuleCallback,
499 MemoryCallback,
500 } MINIDUMP_CALLBACK_TYPE;
502 typedef struct _MINIDUMP_THREAD_CALLBACK
504 ULONG ThreadId;
505 HANDLE ThreadHandle;
506 CONTEXT Context;
507 ULONG SizeOfContext;
508 ULONG64 StackBase;
509 ULONG64 StackEnd;
510 } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK;
512 typedef struct _MINIDUMP_THREAD_EX_CALLBACK
514 ULONG ThreadId;
515 HANDLE ThreadHandle;
516 CONTEXT Context;
517 ULONG SizeOfContext;
518 ULONG64 StackBase;
519 ULONG64 StackEnd;
520 ULONG64 BackingStoreBase;
521 ULONG64 BackingStoreEnd;
522 } MINIDUMP_THREAD_EX_CALLBACK, *PMINIDUMP_THREAD_EX_CALLBACK;
524 typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK
526 ULONG ThreadId;
527 } MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK;
529 typedef enum _THREAD_WRITE_FLAGS
531 ThreadWriteThread = 0x0001,
532 ThreadWriteStack = 0x0002,
533 ThreadWriteContext = 0x0004,
534 ThreadWriteBackingStore = 0x0008,
535 ThreadWriteInstructionWindow = 0x0010,
536 ThreadWriteThreadData = 0x0020,
537 ThreadWriteThreadInfo = 0x0040
538 } THREAD_WRITE_FLAGS;
540 typedef struct _MINIDUMP_MODULE_CALLBACK
542 PWCHAR FullPath;
543 ULONG64 BaseOfImage;
544 ULONG SizeOfImage;
545 ULONG CheckSum;
546 ULONG TimeDateStamp;
547 VS_FIXEDFILEINFO VersionInfo;
548 PVOID CvRecord;
549 ULONG SizeOfCvRecord;
550 PVOID MiscRecord;
551 ULONG SizeOfMiscRecord;
552 } MINIDUMP_MODULE_CALLBACK, *PMINIDUMP_MODULE_CALLBACK;
554 typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK
556 ULONG64 BaseOfImage;
557 } MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK;
559 typedef enum _MODULE_WRITE_FLAGS
561 ModuleWriteModule = 0x0001,
562 ModuleWriteDataSeg = 0x0002,
563 ModuleWriteMiscRecord = 0x0004,
564 ModuleWriteCvRecord = 0x0008,
565 ModuleReferencedByMemory = 0x0010,
566 ModuleWriteTlsData = 0x0020,
567 ModuleWriteCodeSegs = 0x0040,
568 } MODULE_WRITE_FLAGS;
570 typedef struct _MINIDUMP_CALLBACK_INPUT
572 ULONG ProcessId;
573 HANDLE ProcessHandle;
574 ULONG CallbackType;
575 union
577 MINIDUMP_THREAD_CALLBACK Thread;
578 MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
579 MINIDUMP_MODULE_CALLBACK Module;
580 MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
581 MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
582 } DUMMYUNIONNAME;
583 } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT;
585 typedef struct _MINIDUMP_CALLBACK_OUTPUT
587 union
589 ULONG ModuleWriteFlags;
590 ULONG ThreadWriteFlags;
591 struct
593 ULONG64 MemoryBase;
594 ULONG MemorySize;
595 } DUMMYSTRUCTNAME;
596 } DUMMYUNIONNAME;
597 } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
599 typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID, const PMINIDUMP_CALLBACK_INPUT, PMINIDUMP_CALLBACK_OUTPUT);
601 typedef struct _MINIDUMP_CALLBACK_INFORMATION
603 MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
604 void* CallbackParam;
605 } MINIDUMP_CALLBACK_INFORMATION, *PMINIDUMP_CALLBACK_INFORMATION;
607 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR
609 ULONG DataSize;
610 RVA Rva;
611 } MINIDUMP_LOCATION_DESCRIPTOR;
613 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64
615 ULONG64 DataSize;
616 RVA64 Rva;
617 } MINIDUMP_LOCATION_DESCRIPTOR64;
619 typedef struct _MINIDUMP_DIRECTORY
621 ULONG StreamType;
622 MINIDUMP_LOCATION_DESCRIPTOR Location;
623 } MINIDUMP_DIRECTORY, *PMINIDUMP_DIRECTORY;
625 typedef struct _MINIDUMP_EXCEPTION
627 ULONG ExceptionCode;
628 ULONG ExceptionFlags;
629 ULONG64 ExceptionRecord;
630 ULONG64 ExceptionAddress;
631 ULONG NumberParameters;
632 ULONG __unusedAlignment;
633 ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
634 } MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION;
636 typedef struct _MINIDUMP_EXCEPTION_INFORMATION
638 DWORD ThreadId;
639 PEXCEPTION_POINTERS ExceptionPointers;
640 BOOL ClientPointers;
641 } MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
643 typedef struct MINIDUMP_EXCEPTION_STREAM
645 ULONG ThreadId;
646 ULONG __alignment;
647 MINIDUMP_EXCEPTION ExceptionRecord;
648 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
649 } MINIDUMP_EXCEPTION_STREAM, *PMINIDUMP_EXCEPTION_STREAM;
651 typedef struct _MINIDUMP_HEADER
653 DWORD Signature;
654 DWORD Version;
655 DWORD NumberOfStreams;
656 RVA StreamDirectoryRva;
657 DWORD CheckSum;
658 union
660 DWORD Reserved;
661 DWORD TimeDateStamp;
662 } DUMMYUNIONNAME;
663 ULONG64 Flags;
664 } MINIDUMP_HEADER, *PMINIDUMP_HEADER;
666 typedef struct _MINIDUMP_MEMORY_DESCRIPTOR
668 ULONG64 StartOfMemoryRange;
669 MINIDUMP_LOCATION_DESCRIPTOR Memory;
670 } MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR;
672 typedef struct _MINIDUMP_MEMORY_LIST
674 ULONG NumberOfMemoryRanges;
675 MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges[1]; /* FIXME: 0-sized array not supported */
676 } MINIDUMP_MEMORY_LIST, *PMINIDUMP_MEMORY_LIST;
678 #define MINIDUMP_MISC1_PROCESS_ID 0x00000001
679 #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002
681 typedef struct _MINIDUMP_MISC_INFO
683 ULONG SizeOfInfo;
684 ULONG Flags1;
685 ULONG ProcessId;
686 ULONG ProcessCreateTime;
687 ULONG ProcessUserTime;
688 ULONG ProcessKernelTime;
689 } MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO;
691 typedef struct _MINIDUMP_MODULE
693 ULONG64 BaseOfImage;
694 ULONG SizeOfImage;
695 ULONG CheckSum;
696 ULONG TimeDateStamp;
697 RVA ModuleNameRva;
698 VS_FIXEDFILEINFO VersionInfo;
699 MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
700 MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
701 ULONG64 Reserved0;
702 ULONG64 Reserved1;
703 } MINIDUMP_MODULE, *PMINIDUMP_MODULE;
705 typedef struct _MINIDUMP_MODULE_LIST
707 ULONG NumberOfModules;
708 MINIDUMP_MODULE Modules[1]; /* FIXME: 0-sized array not supported */
709 } MINIDUMP_MODULE_LIST, *PMINIDUMP_MODULE_LIST;
711 typedef struct _MINIDUMP_STRING
713 ULONG Length;
714 WCHAR Buffer[1]; /* FIXME: O-sized array not supported */
715 } MINIDUMP_STRING, *PMINIDUMP_STRING;
717 typedef struct _MINIDUMP_SYSTEM_INFO
719 USHORT ProcessorArchitecture;
720 USHORT ProcessorLevel;
721 USHORT ProcessorRevision;
722 union
724 USHORT Reserved0;
725 struct
727 UCHAR NumberOfProcessors;
728 UCHAR ProductType;
729 } DUMMYSTRUCTNAME;
730 } DUMMYUNIONNAME;
732 ULONG MajorVersion;
733 ULONG MinorVersion;
734 ULONG BuildNumber;
735 ULONG PlatformId;
737 RVA CSDVersionRva;
738 union
740 ULONG Reserved1;
741 struct
743 USHORT SuiteMask;
744 USHORT Reserved2;
745 } DUMMYSTRUCTNAME;
746 } DUMMYUNIONNAME1;
747 union _CPU_INFORMATION
749 struct
751 ULONG VendorId[3];
752 ULONG VersionInformation;
753 ULONG FeatureInformation;
754 ULONG AMDExtendedCpuFeatures;
755 } X86CpuInfo;
756 struct
758 ULONG64 ProcessorFeatures[2];
759 } OtherCpuInfo;
760 } Cpu;
762 } MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO;
764 typedef struct _MINIDUMP_THREAD
766 ULONG ThreadId;
767 ULONG SuspendCount;
768 ULONG PriorityClass;
769 ULONG Priority;
770 ULONG64 Teb;
771 MINIDUMP_MEMORY_DESCRIPTOR Stack;
772 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
773 } MINIDUMP_THREAD, *PMINIDUMP_THREAD;
775 typedef struct _MINIDUMP_THREAD_LIST
777 ULONG NumberOfThreads;
778 MINIDUMP_THREAD Threads[1]; /* FIXME: no support of 0 sized array */
779 } MINIDUMP_THREAD_LIST, *PMINIDUMP_THREAD_LIST;
781 typedef struct _MINIDUMP_USER_STREAM
783 ULONG Type;
784 ULONG BufferSize;
785 void* Buffer;
786 } MINIDUMP_USER_STREAM, *PMINIDUMP_USER_STREAM;
788 typedef struct _MINIDUMP_USER_STREAM_INFORMATION
790 ULONG UserStreamCount;
791 PMINIDUMP_USER_STREAM UserStreamArray;
792 } MINIDUMP_USER_STREAM_INFORMATION, *PMINIDUMP_USER_STREAM_INFORMATION;
794 typedef enum _MINIDUMP_STREAM_TYPE
796 UnusedStream = 0,
797 ReservedStream0 = 1,
798 ReservedStream1 = 2,
799 ThreadListStream = 3,
800 ModuleListStream = 4,
801 MemoryListStream = 5,
802 ExceptionStream = 6,
803 SystemInfoStream = 7,
804 ThreadExListStream = 8,
805 Memory64ListStream = 9,
806 CommentStreamA = 10,
807 CommentStreamW = 11,
808 HandleDataStream = 12,
809 FunctionTableStream = 13,
810 UnloadedModuleListStream = 14,
811 MiscInfoStream = 15,
812 MemoryInfoListStream = 16,
813 ThreadInfoListStream = 17,
815 LastReservedStream = 0xffff
816 } MINIDUMP_STREAM_TYPE;
818 BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
819 const PMINIDUMP_EXCEPTION_INFORMATION,
820 const PMINIDUMP_USER_STREAM_INFORMATION,
821 const PMINIDUMP_CALLBACK_INFORMATION);
822 BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*,
823 ULONG*);
825 #include <poppack.h>
827 /*************************
828 * MODULE handling *
829 *************************/
831 /* flags for SymLoadModuleEx */
832 #define SLMFLAG_VIRTUAL 0x1
833 #define SLMFLAG_NO_SYMBOLS 0x4
835 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
836 BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID);
837 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
838 BOOL WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID);
839 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR, DWORD64, ULONG, PVOID);
840 BOOL WINAPI EnumerateLoadedModulesW64(HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID);
841 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR, ULONG, PVOID);
842 BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID);
843 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR, DWORD64, PVOID);
844 BOOL WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID);
845 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR, DWORD64, PVOID);
846 BOOL WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID);
847 BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE);
848 BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
849 BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64);
850 BOOL WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64);
851 DWORD WINAPI SymGetModuleBase(HANDLE, DWORD);
852 DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64);
853 DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD);
854 DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD);
855 DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD,
856 PMODLOAD_DATA, DWORD);
857 DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD,
858 PMODLOAD_DATA, DWORD);
859 BOOL WINAPI SymUnloadModule(HANDLE, DWORD);
860 BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64);
862 /*************************
863 * Symbol Handling *
864 *************************/
866 #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
867 #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER /* 0x08 */
868 #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL /* 0x10 */
869 #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL /* 0x20 */
870 #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER /* 0x40 */
871 #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL /* 0x80 */
872 #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT /* 0x100 */
873 #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION /* 0x800 */
875 #define SYMFLAG_VALUEPRESENT 0x00000001
876 #define SYMFLAG_REGISTER 0x00000008
877 #define SYMFLAG_REGREL 0x00000010
878 #define SYMFLAG_FRAMEREL 0x00000020
879 #define SYMFLAG_PARAMETER 0x00000040
880 #define SYMFLAG_LOCAL 0x00000080
881 #define SYMFLAG_CONSTANT 0x00000100
882 #define SYMFLAG_EXPORT 0x00000200
883 #define SYMFLAG_FORWARDER 0x00000400
884 #define SYMFLAG_FUNCTION 0x00000800
885 #define SYMFLAG_VIRTUAL 0x00001000
886 #define SYMFLAG_THUNK 0x00002000
887 #define SYMFLAG_TLSREL 0x00004000
888 #define SYMFLAG_SLOT 0x00008000
890 #define MAX_SYM_NAME 2000
892 typedef struct _SYMBOL_INFO
894 ULONG SizeOfStruct;
895 ULONG TypeIndex;
896 ULONG64 Reserved[2];
897 ULONG info; /* sdk states info, while MSDN says it's Index... */
898 ULONG Size;
899 ULONG64 ModBase;
900 ULONG Flags;
901 ULONG64 Value;
902 ULONG64 Address;
903 ULONG Register;
904 ULONG Scope;
905 ULONG Tag;
906 ULONG NameLen;
907 ULONG MaxNameLen;
908 CHAR Name[1];
909 } SYMBOL_INFO, *PSYMBOL_INFO;
911 typedef struct _SYMBOL_INFOW
913 ULONG SizeOfStruct;
914 ULONG TypeIndex;
915 ULONG64 Reserved[2];
916 ULONG Index;
917 ULONG Size;
918 ULONG64 ModBase;
919 ULONG Flags;
920 ULONG64 Value;
921 ULONG64 Address;
922 ULONG Register;
923 ULONG Scope;
924 ULONG Tag;
925 ULONG NameLen;
926 ULONG MaxNameLen;
927 WCHAR Name[1];
928 } SYMBOL_INFOW, *PSYMBOL_INFOW;
930 typedef struct _SYMBOL_INFO_PACKAGE
932 SYMBOL_INFO si;
933 CHAR name[MAX_SYM_NAME+1];
934 } SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE;
936 typedef struct _SYMBOL_INFO_PACKAGEW
938 SYMBOL_INFOW si;
939 WCHAR name[MAX_SYM_NAME+1];
940 } SYMBOL_INFO_PACKAGEW, *PSYMBOL_INFO_PACKAGEW;
942 typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO
944 TI_GET_SYMTAG,
945 TI_GET_SYMNAME,
946 TI_GET_LENGTH,
947 TI_GET_TYPE,
948 TI_GET_TYPEID,
949 TI_GET_BASETYPE,
950 TI_GET_ARRAYINDEXTYPEID,
951 TI_FINDCHILDREN,
952 TI_GET_DATAKIND,
953 TI_GET_ADDRESSOFFSET,
954 TI_GET_OFFSET,
955 TI_GET_VALUE,
956 TI_GET_COUNT,
957 TI_GET_CHILDRENCOUNT,
958 TI_GET_BITPOSITION,
959 TI_GET_VIRTUALBASECLASS,
960 TI_GET_VIRTUALTABLESHAPEID,
961 TI_GET_VIRTUALBASEPOINTEROFFSET,
962 TI_GET_CLASSPARENTID,
963 TI_GET_NESTED,
964 TI_GET_SYMINDEX,
965 TI_GET_LEXICALPARENT,
966 TI_GET_ADDRESS,
967 TI_GET_THISADJUST,
968 TI_GET_UDTKIND,
969 TI_IS_EQUIV_TO,
970 TI_GET_CALLING_CONVENTION,
971 } IMAGEHLP_SYMBOL_TYPE_INFO;
973 #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001
974 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002
975 typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS
977 ULONG SizeOfStruct;
978 ULONG Flags;
979 ULONG NumIds;
980 PULONG TypeIds;
981 ULONG64 TagFilter;
982 ULONG NumReqs;
983 IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds;
984 PULONG_PTR ReqOffsets;
985 PULONG ReqSizes;
986 ULONG_PTR ReqStride;
987 ULONG_PTR BufferSize;
988 PVOID Buffer;
989 ULONG EntriesMatched;
990 ULONG EntriesFilled;
991 ULONG64 TagsFound;
992 ULONG64 AllReqsValid;
993 ULONG NumReqsValid;
994 PULONG64 ReqsValid;
995 } IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS;
997 typedef struct _TI_FINDCHILDREN_PARAMS
999 ULONG Count;
1000 ULONG Start;
1001 ULONG ChildId[1];
1002 } TI_FINDCHILDREN_PARAMS;
1004 #define UNDNAME_COMPLETE (0x0000)
1005 #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)
1006 #define UNDNAME_NO_MS_KEYWORDS (0x0002)
1007 #define UNDNAME_NO_FUNCTION_RETURNS (0x0004)
1008 #define UNDNAME_NO_ALLOCATION_MODEL (0x0008)
1009 #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)
1010 #define UNDNAME_NO_MS_THISTYPE (0x0020)
1011 #define UNDNAME_NO_CV_THISTYPE (0x0040)
1012 #define UNDNAME_NO_THISTYPE (0x0060)
1013 #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)
1014 #define UNDNAME_NO_THROW_SIGNATURES (0x0100)
1015 #define UNDNAME_NO_MEMBER_TYPE (0x0200)
1016 #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)
1017 #define UNDNAME_32_BIT_DECODE (0x0800)
1018 #define UNDNAME_NAME_ONLY (0x1000)
1019 #define UNDNAME_NO_ARGUMENTS (0x2000)
1020 #define UNDNAME_NO_SPECIAL_SYMS (0x4000)
1022 #define SYMSEARCH_MASKOBJS 0x01
1023 #define SYMSEARCH_RECURSE 0x02
1024 #define SYMSEARCH_GLOBALSONLY 0x04
1026 BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID);
1027 BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS);
1028 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID);
1029 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID);
1030 BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
1031 BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
1032 BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*);
1033 BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*);
1034 BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO);
1035 BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW);
1036 BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO);
1037 BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW);
1038 BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL);
1039 BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64);
1040 BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL);
1041 BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64);
1042 BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO);
1043 BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW);
1044 BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL);
1045 BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64);
1046 BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64);
1047 BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL);
1048 BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64);
1049 BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64);
1050 BOOL WINAPI SymEnumSym(HANDLE,ULONG64,PSYM_ENUMERATESYMBOLS_CALLBACK,PVOID);
1051 BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK,
1052 PVOID);
1053 BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW,
1054 PVOID);
1055 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
1056 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, ULONG, ULONG, PVOID);
1057 BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID);
1058 BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID);
1059 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
1060 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID);
1061 BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID);
1062 BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID);
1063 BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
1064 BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
1065 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID);
1066 BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID);
1067 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64);
1068 BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
1069 BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
1070 BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
1071 BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD);
1072 BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
1073 BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL);
1074 BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL);
1075 BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD);
1076 BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD);
1077 DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD);
1078 DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD);
1079 BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
1080 BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
1081 BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
1082 BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
1083 BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD);
1084 BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD);
1085 BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD);
1086 BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD);
1088 /*************************
1089 * Source Files *
1090 *************************/
1091 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE, PVOID);
1092 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW, PVOID);
1094 BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, PSYM_ENUMSOURCEFILES_CALLBACK,
1095 PVOID);
1096 BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID);
1097 BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
1098 BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW);
1099 BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
1100 BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64);
1101 BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE);
1102 BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW);
1103 BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64);
1104 BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64);
1105 BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE);
1106 BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW);
1107 BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64);
1108 BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64);
1109 BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE);
1110 BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64);
1111 BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64);
1112 ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG);
1113 BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD);
1114 BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD);
1115 BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID*, DWORD*);
1116 BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*);
1117 BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD);
1118 BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD);
1119 BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD);
1120 BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD);
1122 typedef struct _SRCCODEINFO
1124 DWORD SizeOfStruct;
1125 PVOID Key;
1126 DWORD64 ModBase;
1127 CHAR Obj[MAX_PATH+1];
1128 CHAR FileName[MAX_PATH+1];
1129 DWORD LineNumber;
1130 DWORD64 Address;
1131 } SRCCODEINFO, *PSRCCODEINFO;
1133 typedef struct _SRCCODEINFOW
1135 DWORD SizeOfStruct;
1136 PVOID Key;
1137 DWORD64 ModBase;
1138 WCHAR Obj[MAX_PATH+1];
1139 WCHAR FileName[MAX_PATH+1];
1140 DWORD LineNumber;
1141 DWORD64 Address;
1142 } SRCCODEINFOW, *PSRCCODEINFOW;
1144 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID);
1145 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW, PVOID);
1146 BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID);
1147 BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID);
1148 BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID);
1149 BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID);
1151 /*************************
1152 * File & image handling *
1153 *************************/
1154 BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL);
1155 BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL);
1156 BOOL WINAPI SymCleanup(HANDLE);
1158 HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR);
1159 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
1160 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
1161 HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
1162 HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
1163 HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
1164 HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
1165 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR, PVOID);
1166 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR, PVOID);
1167 BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
1168 PSTR, PFINDFILEINPATHCALLBACK, PVOID);
1169 BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
1170 PSTR, PFINDFILEINPATHCALLBACK, PVOID);
1171 BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD,
1172 PWSTR, PFINDFILEINPATHCALLBACKW, PVOID);
1173 HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR);
1174 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
1175 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
1176 HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
1177 HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
1178 HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
1179 HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
1180 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID);
1181 PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG,
1182 PIMAGE_SECTION_HEADER *);
1183 PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG);
1184 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG);
1185 PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER*);
1186 BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD);
1187 BOOL WINAPI SymGetSearchPathW(HANDLE, PWSTR, DWORD);
1188 BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR);
1189 BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR);
1190 DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE);
1191 BOOL WINAPI MakeSureDirectoryPathExists(PCSTR);
1192 BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR);
1193 BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR);
1194 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(PCSTR, PVOID);
1195 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(PCWSTR, PVOID);
1196 BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID);
1197 BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID);
1198 BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR*, PSTR*);
1199 BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR*, PWSTR*);
1200 PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR);
1201 PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR);
1202 PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t);
1203 PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t);
1204 #define hdBase 0
1205 #define hdSym 1
1206 #define hdSrc 2
1207 #define hdMax 3
1209 /*************************
1210 * Context management *
1211 *************************/
1212 BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT);
1215 /*************************
1216 * Stack management *
1217 *************************/
1219 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1220 #define KDHELP KDHELP64
1221 #define PKDHELP PKDHELP64
1222 #else
1223 typedef struct _KDHELP
1225 DWORD Thread;
1226 DWORD ThCallbackStack;
1227 DWORD NextCallback;
1228 DWORD FramePointer;
1229 DWORD KiCallUserMode;
1230 DWORD KeUserCallbackDispatcher;
1231 DWORD SystemRangeStart;
1232 } KDHELP, *PKDHELP;
1233 #endif
1235 typedef struct _KDHELP64
1237 DWORD64 Thread;
1238 DWORD ThCallbackStack;
1239 DWORD ThCallbackBStore;
1240 DWORD NextCallback;
1241 DWORD FramePointer;
1242 DWORD64 KiCallUserMode;
1243 DWORD64 KeUserCallbackDispatcher;
1244 DWORD64 SystemRangeStart;
1245 DWORD64 Reserved[8];
1246 } KDHELP64, *PKDHELP64;
1248 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
1249 #define STACKFRAME STACKFRAME64
1250 #define LPSTACKFRAME LPSTACKFRAME64
1251 #else
1252 typedef struct _STACKFRAME
1254 ADDRESS AddrPC;
1255 ADDRESS AddrReturn;
1256 ADDRESS AddrFrame;
1257 ADDRESS AddrStack;
1258 PVOID FuncTableEntry;
1259 DWORD Params[4];
1260 BOOL Far;
1261 BOOL Virtual;
1262 DWORD Reserved[3];
1263 KDHELP KdHelp;
1264 ADDRESS AddrBStore;
1265 } STACKFRAME, *LPSTACKFRAME;
1266 #endif
1268 typedef struct _STACKFRAME64
1270 ADDRESS64 AddrPC;
1271 ADDRESS64 AddrReturn;
1272 ADDRESS64 AddrFrame;
1273 ADDRESS64 AddrStack;
1274 ADDRESS64 AddrBStore;
1275 PVOID FuncTableEntry;
1276 DWORD64 Params[4];
1277 BOOL Far;
1278 BOOL Virtual;
1279 DWORD64 Reserved[3];
1280 KDHELP64 KdHelp;
1281 } STACKFRAME64, *LPSTACKFRAME64;
1283 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)
1284 (HANDLE, DWORD, PVOID, DWORD, PDWORD);
1285 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD);
1286 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(HANDLE, DWORD);
1287 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE, HANDLE, LPADDRESS);
1288 BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID,
1289 PREAD_PROCESS_MEMORY_ROUTINE,
1290 PFUNCTION_TABLE_ACCESS_ROUTINE,
1291 PGET_MODULE_BASE_ROUTINE,
1292 PTRANSLATE_ADDRESS_ROUTINE);
1294 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)
1295 (HANDLE, DWORD64, PVOID, DWORD, PDWORD);
1296 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE, DWORD64);
1297 typedef DWORD64 (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(HANDLE, DWORD64);
1298 typedef DWORD64 (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE, HANDLE, LPADDRESS64);
1299 BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID,
1300 PREAD_PROCESS_MEMORY_ROUTINE64,
1301 PFUNCTION_TABLE_ACCESS_ROUTINE64,
1302 PGET_MODULE_BASE_ROUTINE64,
1303 PTRANSLATE_ADDRESS_ROUTINE64);
1305 PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD);
1306 PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64);
1308 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID);
1309 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64);
1311 BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID);
1312 BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64);
1314 /*************************
1315 * Version, global stuff *
1316 *************************/
1318 #define API_VERSION_NUMBER 9
1320 typedef struct API_VERSION
1322 USHORT MajorVersion;
1323 USHORT MinorVersion;
1324 USHORT Revision;
1325 USHORT Reserved;
1326 } API_VERSION, *LPAPI_VERSION;
1328 LPAPI_VERSION WINAPI ImagehlpApiVersion(void);
1329 LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION);
1331 typedef struct _IMAGE_DEBUG_INFORMATION
1333 LIST_ENTRY List;
1334 DWORD ReservedSize;
1335 PVOID ReservedMappedBase;
1336 USHORT ReservedMachine;
1337 USHORT ReservedCharacteristics;
1338 DWORD ReservedCheckSum;
1339 DWORD ImageBase;
1340 DWORD SizeOfImage;
1341 DWORD ReservedNumberOfSections;
1342 PIMAGE_SECTION_HEADER ReservedSections;
1343 DWORD ReservedExportedNamesSize;
1344 PSTR ReservedExportedNames;
1345 DWORD ReservedNumberOfFunctionTableEntries;
1346 PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
1347 DWORD ReservedLowestFunctionStartingAddress;
1348 DWORD ReservedHighestFunctionEndingAddress;
1349 DWORD ReservedNumberOfFpoTableEntries;
1350 PFPO_DATA ReservedFpoTableEntries;
1351 DWORD SizeOfCoffSymbols;
1352 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
1353 DWORD ReservedSizeOfCodeViewSymbols;
1354 PVOID ReservedCodeViewSymbols;
1355 PSTR ImageFilePath;
1356 PSTR ImageFileName;
1357 PSTR ReservedDebugFilePath;
1358 DWORD ReservedTimeDateStamp;
1359 BOOL ReservedRomImage;
1360 PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
1361 DWORD ReservedNumberOfDebugDirectories;
1362 DWORD ReservedOriginalFunctionTableBaseAddress;
1363 DWORD Reserved[ 2 ];
1364 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
1367 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG);
1369 BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
1371 DWORD WINAPI SymGetOptions(void);
1372 DWORD WINAPI SymSetOptions(DWORD);
1374 BOOL WINAPI SymSetParentWindow(HWND);
1376 /*************************
1377 * Version, global stuff *
1378 *************************/
1380 typedef BOOL (WINAPI* PSYMBOLSERVERPROC)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR);
1381 typedef BOOL (WINAPI* PSYMBOLSERVERPROCA)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR);
1382 typedef BOOL (WINAPI* PSYMBOLSERVERPROCW)(PCWSTR, PCWSTR, PVOID, DWORD, DWORD, PWSTR);
1383 typedef BOOL (WINAPI* PSYMBOLSERVEROPENPROC)(void);
1384 typedef BOOL (WINAPI* PSYMBOLSERVERCLOSEPROC)(void);
1385 typedef BOOL (WINAPI* PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64);
1386 typedef BOOL (CALLBACK* PSYMBOLSERVERCALLBACKPROC)(UINT_PTR, ULONG64, ULONG64);
1387 typedef UINT_PTR (WINAPI* PSYMBOLSERVERGETOPTIONSPROC)(void);
1388 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROC)(PCSTR);
1389 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCA)(PCSTR);
1390 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCW)(PCWSTR);
1392 #define SSRVOPT_CALLBACK 0x0001
1393 #define SSRVOPT_DWORD 0x0002
1394 #define SSRVOPT_DWORDPTR 0x0004
1395 #define SSRVOPT_GUIDPTR 0x0008
1396 #define SSRVOPT_OLDGUIDPTR 0x0010
1397 #define SSRVOPT_UNATTENDED 0x0020
1398 #define SSRVOPT_NOCOPY 0x0040
1399 #define SSRVOPT_PARENTWIN 0x0080
1400 #define SSRVOPT_PARAMTYPE 0x0100
1401 #define SSRVOPT_SECURE 0x0200
1402 #define SSRVOPT_TRACE 0x0400
1403 #define SSRVOPT_SETCONTEXT 0x0800
1404 #define SSRVOPT_PROXY 0x1000
1405 #define SSRVOPT_DOWNSTREAM_STORE 0x2000
1406 #define SSRVOPT_RESET ((ULONG_PTR)-1)
1408 #define SSRVACTION_TRACE 1
1409 #define SSRVACTION_QUERYCANCEL 2
1410 #define SSRVACTION_EVENT 3
1412 #ifdef __cplusplus
1413 } /* extern "C" */
1414 #endif /* defined(__cplusplus) */
1416 #endif /* __WINE_DBGHELP_H */