VirtualBox

source: vbox/trunk/src/VBox/Devices/Graphics/shaderlib/wine/include/dbghelp.h

最後變更 在這個檔案是 53206,由 vboxsync 提交於 10 年 前

Devices/vmsvga: header fixes

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette