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 /* A set of documentation macros (see also imagehlp.h) */
28 #ifndef __deref_out_opt
29 # define __deref_out_opt
31 #ifndef __deref_opt_out
32 # define __deref_opt_out
41 # define __in_bcount(x)
43 #ifndef __in_bcount_opt
44 # define __in_bcount_opt(x)
47 # define __in_ecount(x)
55 #ifndef __inout_bcount
56 # define __inout_bcount(x)
58 #ifndef __inout_ecount
59 # define __inout_ecount(x)
68 # define __out_bcount(x)
70 #ifndef __out_bcount_opt
71 # define __out_bcount_opt(x)
74 # define __out_ecount(x)
76 #ifndef __out_ecount_opt
77 # define __out_ecount_opt(x)
80 # define __out_xcount(x)
86 #endif /* defined(__cplusplus) */
94 #define IMAGEAPI WINAPI
95 #define DBHLPAPI IMAGEAPI
97 typedef struct _LOADED_IMAGE
101 PUCHAR MappedAddress
;
102 PIMAGE_NT_HEADERS FileHeader
;
103 PIMAGE_SECTION_HEADER LastRvaSection
;
104 ULONG NumberOfSections
;
105 PIMAGE_SECTION_HEADER Sections
;
106 ULONG Characteristics
;
107 BOOLEAN fSystemImage
;
113 } LOADED_IMAGE
, *PLOADED_IMAGE
;
115 /*************************
117 *************************/
127 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
128 #define ADDRESS ADDRESS64
129 #define LPADDRESS LPADDRESS64
131 typedef struct _tagADDRESS
136 } ADDRESS
, *LPADDRESS
;
139 typedef struct _tagADDRESS64
144 } ADDRESS64
, *LPADDRESS64
;
146 #define SYMF_OMAP_GENERATED 0x00000001
147 #define SYMF_OMAP_MODIFIED 0x00000002
148 #define SYMF_USER_GENERATED 0x00000004
149 #define SYMF_REGISTER 0x00000008
150 #define SYMF_REGREL 0x00000010
151 #define SYMF_FRAMEREL 0x00000020
152 #define SYMF_PARAMETER 0x00000040
153 #define SYMF_LOCAL 0x00000080
154 #define SYMF_CONSTANT 0x00000100
155 #define SYMF_EXPORT 0x00000200
156 #define SYMF_FORWARDER 0x00000400
157 #define SYMF_FUNCTION 0x00000800
158 #define SYMF_VIRTUAL 0x00001000
159 #define SYMF_THUNK 0x00002000
160 #define SYMF_TLSREL 0x00004000
182 SymTagCompilandDetails
,
199 SymTagFunctionArgType
,
200 SymTagFuncDebugStart
,
202 SymTagUsingNamespace
,
219 SymTagHeapAllocationSite
,
223 #endif // _NO_CVCONST_H
225 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
226 #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
227 #define IMAGEHLP_SYMBOLW IMAGEHLP_SYMBOLW64
228 #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
229 #define PIMAGEHLP_SYMBOLW PIMAGEHLP_SYMBOLW64
231 typedef struct _IMAGEHLP_SYMBOL
239 } IMAGEHLP_SYMBOL
, *PIMAGEHLP_SYMBOL
;
241 typedef struct _IMAGEHLP_SYMBOLW
249 } IMAGEHLP_SYMBOLW
, *PIMAGEHLP_SYMBOLW
;
252 typedef struct _IMAGEHLP_SYMBOL64
260 } IMAGEHLP_SYMBOL64
, *PIMAGEHLP_SYMBOL64
;
262 typedef struct _IMAGEHLP_SYMBOLW64
270 } IMAGEHLP_SYMBOLW64
, *PIMAGEHLP_SYMBOLW64
;
272 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
273 #define IMAGEHLP_MODULE IMAGEHLP_MODULE64
274 #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
275 #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
276 #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
278 typedef struct _IMAGEHLP_MODULE
289 CHAR LoadedImageName
[256];
290 } IMAGEHLP_MODULE
, *PIMAGEHLP_MODULE
;
292 typedef struct _IMAGEHLP_MODULEW
301 WCHAR ModuleName
[32];
302 WCHAR ImageName
[256];
303 WCHAR LoadedImageName
[256];
304 } IMAGEHLP_MODULEW
, *PIMAGEHLP_MODULEW
;
307 typedef struct _IMAGEHLP_MODULE64
318 CHAR LoadedImageName
[256];
319 CHAR LoadedPdbName
[256];
321 CHAR CVData
[MAX_PATH
*3];
332 } IMAGEHLP_MODULE64
, *PIMAGEHLP_MODULE64
;
334 typedef struct _IMAGEHLP_MODULEW64
343 WCHAR ModuleName
[32];
344 WCHAR ImageName
[256];
345 WCHAR LoadedImageName
[256];
346 WCHAR LoadedPdbName
[256];
348 WCHAR CVData
[MAX_PATH
*3];
359 } IMAGEHLP_MODULEW64
, *PIMAGEHLP_MODULEW64
;
361 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
362 #define IMAGEHLP_LINE IMAGEHLP_LINE64
363 #define PIMAGEHLP_LINE PIMAGEHLP_LINE64
364 #define IMAGEHLP_LINEW IMAGEHLP_LINEW64
365 #define PIMAGEHLP_LINEW PIMAGEHLP_LINEW64
367 typedef struct _IMAGEHLP_LINE
374 } IMAGEHLP_LINE
, *PIMAGEHLP_LINE
;
376 typedef struct _IMAGEHLP_LINEW
383 } IMAGEHLP_LINEW
, *PIMAGEHLP_LINEW
;
386 typedef struct _IMAGEHLP_LINE64
393 } IMAGEHLP_LINE64
, *PIMAGEHLP_LINE64
;
395 typedef struct _IMAGEHLP_LINEW64
402 } IMAGEHLP_LINEW64
, *PIMAGEHLP_LINEW64
;
404 typedef struct _SOURCEFILE
408 } SOURCEFILE
, *PSOURCEFILE
;
410 typedef struct _SOURCEFILEW
414 } SOURCEFILEW
, *PSOURCEFILEW
;
416 #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
417 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
418 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
419 #define CBA_SYMBOLS_UNLOADED 0x00000004
420 #define CBA_DUPLICATE_SYMBOL 0x00000005
421 #define CBA_READ_MEMORY 0x00000006
422 #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
423 #define CBA_SET_OPTIONS 0x00000008
424 #define CBA_EVENT 0x00000010
425 #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
426 #define CBA_DEBUG_INFO 0x10000000
428 typedef struct _IMAGEHLP_CBA_READ_MEMORY
434 } IMAGEHLP_CBA_READ_MEMORY
, *PIMAGEHLP_CBA_READ_MEMORY
;
445 #define EVENT_SRCSPEW_START 100
446 #define EVENT_SRCSPEW 100
447 #define EVENT_SRCSPEW_END 199
449 typedef struct _IMAGEHLP_CBA_EVENT
455 } IMAGEHLP_CBA_EVENT
, *PIMAGEHLP_CBA_EVENT
;
457 typedef struct _IMAGEHLP_CBA_EVENTW
463 } IMAGEHLP_CBA_EVENTW
, *PIMAGEHLP_CBA_EVENTW
;
465 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
466 #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
467 #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
469 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD
475 CHAR FileName
[MAX_PATH
];
478 } IMAGEHLP_DEFERRED_SYMBOL_LOAD
, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD
;
481 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64
487 CHAR FileName
[MAX_PATH
];
491 } IMAGEHLP_DEFERRED_SYMBOL_LOAD64
, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
;
493 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64
499 WCHAR FileName
[MAX_PATH
+ 1];
503 } IMAGEHLP_DEFERRED_SYMBOL_LOADW64
, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64
;
505 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
506 #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
507 #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
509 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL
513 PIMAGEHLP_SYMBOL Symbol
;
514 DWORD SelectedSymbol
;
515 } IMAGEHLP_DUPLICATE_SYMBOL
, *PIMAGEHLP_DUPLICATE_SYMBOL
;
518 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64
522 PIMAGEHLP_SYMBOL64 Symbol
;
523 DWORD SelectedSymbol
;
524 } IMAGEHLP_DUPLICATE_SYMBOL64
, *PIMAGEHLP_DUPLICATE_SYMBOL64
;
526 #define SYMOPT_CASE_INSENSITIVE 0x00000001
527 #define SYMOPT_UNDNAME 0x00000002
528 #define SYMOPT_DEFERRED_LOADS 0x00000004
529 #define SYMOPT_NO_CPP 0x00000008
530 #define SYMOPT_LOAD_LINES 0x00000010
531 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
532 #define SYMOPT_LOAD_ANYTHING 0x00000040
533 #define SYMOPT_IGNORE_CVREC 0x00000080
534 #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
535 #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
536 #define SYMOPT_EXACT_SYMBOLS 0x00000400
537 #define SYMOPT_WILD_UNDERSCORE 0x00000800
538 #define SYMOPT_USE_DEFAULTS 0x00001000
539 #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
540 #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
541 #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
542 #define SYMOPT_PUBLICS_ONLY 0x00004000
543 #define SYMOPT_NO_PUBLICS 0x00008000
544 #define SYMOPT_AUTO_PUBLICS 0x00010000
545 #define SYMOPT_NO_IMAGE_SEARCH 0x00020000
546 #define SYMOPT_SECURE 0x00040000
547 #define SYMOPT_NO_PROMPTS 0x00080000
548 #define SYMOPT_OVERWRITE 0x00100000
549 #define SYMOPT_IGNORE_IMAGEDIR 0x00200000
550 #define SYMOPT_FLAT_DIRECTORY 0x00400000
551 #define SYMOPT_FAVOR_COMPRESSED 0x00800000
552 #define SYMOPT_ALLOW_ZERO_ADDRESS 0x01000000
553 #define SYMOPT_DISABLE_SYMSRV_AUTODETECT 0x02000000
554 #define SYMOPT_READONLY_CACHE 0x04000000
555 #define SYMOPT_SYMPATH_LAST 0x08000000
556 #define SYMOPT_DEBUG 0x80000000
558 typedef struct _IMAGEHLP_STACK_FRAME
560 ULONG64 InstructionOffset
;
561 ULONG64 ReturnOffset
;
564 ULONG64 BackingStoreOffset
;
565 ULONG64 FuncTableEntry
;
570 } IMAGEHLP_STACK_FRAME
, *PIMAGEHLP_STACK_FRAME
;
572 typedef VOID IMAGEHLP_CONTEXT
, *PIMAGEHLP_CONTEXT
;
574 #define DBHHEADER_DEBUGDIRS 0x1
575 typedef struct _DBGHELP_MODLOAD_DATA
582 } MODLOAD_DATA
, *PMODLOAD_DATA
;
584 /*************************
586 *************************/
588 #include <pshpack4.h>
591 #define MINIDUMP_SIGNATURE 0x504D444D /* 'MDMP' */
592 #define MINIDUMP_VERSION (42899)
595 typedef ULONG64 RVA64
;
597 typedef enum _MINIDUMP_TYPE
599 MiniDumpNormal
= 0x0000,
600 MiniDumpWithDataSegs
= 0x0001,
601 MiniDumpWithFullMemory
= 0x0002,
602 MiniDumpWithHandleData
= 0x0004,
603 MiniDumpFilterMemory
= 0x0008,
604 MiniDumpScanMemory
= 0x0010,
605 MiniDumpWithUnloadedModules
= 0x0020,
606 MiniDumpWithIndirectlyReferencedMemory
= 0x0040,
607 MiniDumpFilterModulePaths
= 0x0080,
608 MiniDumpWithProcessThreadData
= 0x0100,
609 MiniDumpWithPrivateReadWriteMemory
= 0x0200,
610 MiniDumpWithoutOptionalData
= 0x0400,
611 MiniDumpWithFullMemoryInfo
= 0x0800,
612 MiniDumpWithThreadInfo
= 0x1000,
613 MiniDumpWithCodeSegs
= 0x2000
616 typedef enum _MINIDUMP_CALLBACK_TYPE
621 IncludeThreadCallback
,
622 IncludeModuleCallback
,
624 } MINIDUMP_CALLBACK_TYPE
;
626 typedef struct _MINIDUMP_THREAD_CALLBACK
634 } MINIDUMP_THREAD_CALLBACK
, *PMINIDUMP_THREAD_CALLBACK
;
636 typedef struct _MINIDUMP_THREAD_EX_CALLBACK
644 ULONG64 BackingStoreBase
;
645 ULONG64 BackingStoreEnd
;
646 } MINIDUMP_THREAD_EX_CALLBACK
, *PMINIDUMP_THREAD_EX_CALLBACK
;
648 typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK
651 } MINIDUMP_INCLUDE_THREAD_CALLBACK
, *PMINIDUMP_INCLUDE_THREAD_CALLBACK
;
653 typedef enum _THREAD_WRITE_FLAGS
655 ThreadWriteThread
= 0x0001,
656 ThreadWriteStack
= 0x0002,
657 ThreadWriteContext
= 0x0004,
658 ThreadWriteBackingStore
= 0x0008,
659 ThreadWriteInstructionWindow
= 0x0010,
660 ThreadWriteThreadData
= 0x0020,
661 ThreadWriteThreadInfo
= 0x0040
662 } THREAD_WRITE_FLAGS
;
664 typedef struct _MINIDUMP_MODULE_CALLBACK
671 VS_FIXEDFILEINFO VersionInfo
;
673 ULONG SizeOfCvRecord
;
675 ULONG SizeOfMiscRecord
;
676 } MINIDUMP_MODULE_CALLBACK
, *PMINIDUMP_MODULE_CALLBACK
;
678 typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK
681 } MINIDUMP_INCLUDE_MODULE_CALLBACK
, *PMINIDUMP_INCLUDE_MODULE_CALLBACK
;
683 typedef enum _MODULE_WRITE_FLAGS
685 ModuleWriteModule
= 0x0001,
686 ModuleWriteDataSeg
= 0x0002,
687 ModuleWriteMiscRecord
= 0x0004,
688 ModuleWriteCvRecord
= 0x0008,
689 ModuleReferencedByMemory
= 0x0010,
690 ModuleWriteTlsData
= 0x0020,
691 ModuleWriteCodeSegs
= 0x0040,
692 } MODULE_WRITE_FLAGS
;
694 typedef struct _MINIDUMP_CALLBACK_INPUT
697 HANDLE ProcessHandle
;
701 MINIDUMP_THREAD_CALLBACK Thread
;
702 MINIDUMP_THREAD_EX_CALLBACK ThreadEx
;
703 MINIDUMP_MODULE_CALLBACK Module
;
704 MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread
;
705 MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule
;
707 } MINIDUMP_CALLBACK_INPUT
, *PMINIDUMP_CALLBACK_INPUT
;
709 typedef struct _MINIDUMP_CALLBACK_OUTPUT
713 ULONG ModuleWriteFlags
;
714 ULONG ThreadWriteFlags
;
721 } MINIDUMP_CALLBACK_OUTPUT
, *PMINIDUMP_CALLBACK_OUTPUT
;
724 (WINAPI
* MINIDUMP_CALLBACK_ROUTINE
)(
726 _In_
const PMINIDUMP_CALLBACK_INPUT
,
727 _Inout_ PMINIDUMP_CALLBACK_OUTPUT
);
729 typedef struct _MINIDUMP_CALLBACK_INFORMATION
731 MINIDUMP_CALLBACK_ROUTINE CallbackRoutine
;
733 } MINIDUMP_CALLBACK_INFORMATION
, *PMINIDUMP_CALLBACK_INFORMATION
;
735 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR
739 } MINIDUMP_LOCATION_DESCRIPTOR
;
741 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64
745 } MINIDUMP_LOCATION_DESCRIPTOR64
;
747 typedef struct _MINIDUMP_DIRECTORY
750 MINIDUMP_LOCATION_DESCRIPTOR Location
;
751 } MINIDUMP_DIRECTORY
, *PMINIDUMP_DIRECTORY
;
753 typedef struct _MINIDUMP_EXCEPTION
756 ULONG ExceptionFlags
;
757 ULONG64 ExceptionRecord
;
758 ULONG64 ExceptionAddress
;
759 ULONG NumberParameters
;
760 ULONG __unusedAlignment
;
761 ULONG64 ExceptionInformation
[EXCEPTION_MAXIMUM_PARAMETERS
];
762 } MINIDUMP_EXCEPTION
, *PMINIDUMP_EXCEPTION
;
764 typedef struct _MINIDUMP_EXCEPTION_INFORMATION
767 PEXCEPTION_POINTERS ExceptionPointers
;
769 } MINIDUMP_EXCEPTION_INFORMATION
, *PMINIDUMP_EXCEPTION_INFORMATION
;
771 typedef struct MINIDUMP_EXCEPTION_STREAM
775 MINIDUMP_EXCEPTION ExceptionRecord
;
776 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext
;
777 } MINIDUMP_EXCEPTION_STREAM
, *PMINIDUMP_EXCEPTION_STREAM
;
779 typedef struct _MINIDUMP_HEADER
783 DWORD NumberOfStreams
;
784 RVA StreamDirectoryRva
;
792 } MINIDUMP_HEADER
, *PMINIDUMP_HEADER
;
794 typedef struct _MINIDUMP_MEMORY_DESCRIPTOR
796 ULONG64 StartOfMemoryRange
;
797 MINIDUMP_LOCATION_DESCRIPTOR Memory
;
798 } MINIDUMP_MEMORY_DESCRIPTOR
, *PMINIDUMP_MEMORY_DESCRIPTOR
;
800 typedef struct _MINIDUMP_MEMORY_LIST
802 ULONG NumberOfMemoryRanges
;
803 MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges
[1]; /* FIXME: 0-sized array not supported */
804 } MINIDUMP_MEMORY_LIST
, *PMINIDUMP_MEMORY_LIST
;
806 #define MINIDUMP_MISC1_PROCESS_ID 0x00000001
807 #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002
809 typedef struct _MINIDUMP_MISC_INFO
814 ULONG ProcessCreateTime
;
815 ULONG ProcessUserTime
;
816 ULONG ProcessKernelTime
;
817 } MINIDUMP_MISC_INFO
, *PMINIDUMP_MISC_INFO
;
819 typedef struct _MINIDUMP_MODULE
826 VS_FIXEDFILEINFO VersionInfo
;
827 MINIDUMP_LOCATION_DESCRIPTOR CvRecord
;
828 MINIDUMP_LOCATION_DESCRIPTOR MiscRecord
;
831 } MINIDUMP_MODULE
, *PMINIDUMP_MODULE
;
833 typedef struct _MINIDUMP_MODULE_LIST
835 ULONG NumberOfModules
;
836 MINIDUMP_MODULE Modules
[1]; /* FIXME: 0-sized array not supported */
837 } MINIDUMP_MODULE_LIST
, *PMINIDUMP_MODULE_LIST
;
839 typedef struct _MINIDUMP_STRING
842 WCHAR Buffer
[1]; /* FIXME: O-sized array not supported */
843 } MINIDUMP_STRING
, *PMINIDUMP_STRING
;
845 typedef struct _MINIDUMP_SYSTEM_INFO
847 USHORT ProcessorArchitecture
;
848 USHORT ProcessorLevel
;
849 USHORT ProcessorRevision
;
855 UCHAR NumberOfProcessors
;
875 union _CPU_INFORMATION
880 ULONG VersionInformation
;
881 ULONG FeatureInformation
;
882 ULONG AMDExtendedCpuFeatures
;
886 ULONG64 ProcessorFeatures
[2];
890 } MINIDUMP_SYSTEM_INFO
, *PMINIDUMP_SYSTEM_INFO
;
892 typedef struct _MINIDUMP_THREAD
899 MINIDUMP_MEMORY_DESCRIPTOR Stack
;
900 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext
;
901 } MINIDUMP_THREAD
, *PMINIDUMP_THREAD
;
903 typedef struct _MINIDUMP_THREAD_LIST
905 ULONG NumberOfThreads
;
906 MINIDUMP_THREAD Threads
[1]; /* FIXME: no support of 0 sized array */
907 } MINIDUMP_THREAD_LIST
, *PMINIDUMP_THREAD_LIST
;
909 typedef struct _MINIDUMP_USER_STREAM
914 } MINIDUMP_USER_STREAM
, *PMINIDUMP_USER_STREAM
;
916 typedef struct _MINIDUMP_USER_STREAM_INFORMATION
918 ULONG UserStreamCount
;
919 PMINIDUMP_USER_STREAM UserStreamArray
;
920 } MINIDUMP_USER_STREAM_INFORMATION
, *PMINIDUMP_USER_STREAM_INFORMATION
;
922 typedef enum _MINIDUMP_STREAM_TYPE
927 ThreadListStream
= 3,
928 ModuleListStream
= 4,
929 MemoryListStream
= 5,
931 SystemInfoStream
= 7,
932 ThreadExListStream
= 8,
933 Memory64ListStream
= 9,
936 HandleDataStream
= 12,
937 FunctionTableStream
= 13,
938 UnloadedModuleListStream
= 14,
940 MemoryInfoListStream
= 16,
941 ThreadInfoListStream
= 17,
943 LastReservedStream
= 0xffff
944 } MINIDUMP_STREAM_TYPE
;
953 _In_opt_ PMINIDUMP_EXCEPTION_INFORMATION
,
954 _In_opt_ PMINIDUMP_USER_STREAM_INFORMATION
,
955 _In_opt_ PMINIDUMP_CALLBACK_INFORMATION
);
959 MiniDumpReadDumpStream(
962 _Outptr_result_maybenull_ PMINIDUMP_DIRECTORY
*,
963 _Outptr_result_maybenull_ PVOID
*,
968 /*************************
970 *************************/
972 /* flags for SymLoadModuleEx */
973 #define SLMFLAG_VIRTUAL 0x1
974 #define SLMFLAG_NO_SYMBOLS 0x4
977 (CALLBACK
*PENUMLOADED_MODULES_CALLBACK64
)(
985 EnumerateLoadedModules64(
987 _In_ PENUMLOADED_MODULES_CALLBACK64
,
991 (CALLBACK
*PENUMLOADED_MODULES_CALLBACKW64
)(
999 EnumerateLoadedModulesW64(
1001 _In_ PENUMLOADED_MODULES_CALLBACKW64
,
1005 (CALLBACK
*PSYM_ENUMMODULES_CALLBACK64
)(
1012 SymEnumerateModules64(
1014 _In_ PSYM_ENUMMODULES_CALLBACK64
,
1018 (CALLBACK
*PSYM_ENUMMODULES_CALLBACKW64
)(
1025 SymEnumerateModulesW64(
1027 _In_ PSYM_ENUMMODULES_CALLBACKW64
,
1035 _Out_ PIMAGEHLP_MODULE64
);
1039 SymGetModuleInfoW64(
1042 _Out_ PIMAGEHLP_MODULEW64
);
1044 DWORD64 WINAPI
SymGetModuleBase64(_In_ HANDLE
, _In_ DWORD64
);
1065 _In_opt_ PMODLOAD_DATA
,
1077 _In_opt_ PMODLOAD_DATA
,
1080 BOOL WINAPI
SymUnloadModule64(_In_ HANDLE
, _In_ DWORD64
);
1082 /*************************
1084 *************************/
1086 #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
1087 #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER /* 0x08 */
1088 #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL /* 0x10 */
1089 #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL /* 0x20 */
1090 #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER /* 0x40 */
1091 #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL /* 0x80 */
1092 #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT /* 0x100 */
1093 #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION /* 0x800 */
1095 #define SYMFLAG_VALUEPRESENT 0x00000001
1096 #define SYMFLAG_REGISTER 0x00000008
1097 #define SYMFLAG_REGREL 0x00000010
1098 #define SYMFLAG_FRAMEREL 0x00000020
1099 #define SYMFLAG_PARAMETER 0x00000040
1100 #define SYMFLAG_LOCAL 0x00000080
1101 #define SYMFLAG_CONSTANT 0x00000100
1102 #define SYMFLAG_EXPORT 0x00000200
1103 #define SYMFLAG_FORWARDER 0x00000400
1104 #define SYMFLAG_FUNCTION 0x00000800
1105 #define SYMFLAG_VIRTUAL 0x00001000
1106 #define SYMFLAG_THUNK 0x00002000
1107 #define SYMFLAG_TLSREL 0x00004000
1108 #define SYMFLAG_SLOT 0x00008000
1110 #define MAX_SYM_NAME 2000
1112 typedef struct _SYMBOL_INFO
1116 ULONG64 Reserved
[2];
1129 } SYMBOL_INFO
, *PSYMBOL_INFO
;
1131 typedef struct _SYMBOL_INFOW
1135 ULONG64 Reserved
[2];
1148 } SYMBOL_INFOW
, *PSYMBOL_INFOW
;
1150 typedef struct _SYMBOL_INFO_PACKAGE
1153 CHAR name
[MAX_SYM_NAME
+1];
1154 } SYMBOL_INFO_PACKAGE
, *PSYMBOL_INFO_PACKAGE
;
1156 typedef struct _SYMBOL_INFO_PACKAGEW
1159 WCHAR name
[MAX_SYM_NAME
+1];
1160 } SYMBOL_INFO_PACKAGEW
, *PSYMBOL_INFO_PACKAGEW
;
1162 typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO
1170 TI_GET_ARRAYINDEXTYPEID
,
1173 TI_GET_ADDRESSOFFSET
,
1177 TI_GET_CHILDRENCOUNT
,
1179 TI_GET_VIRTUALBASECLASS
,
1180 TI_GET_VIRTUALTABLESHAPEID
,
1181 TI_GET_VIRTUALBASEPOINTEROFFSET
,
1182 TI_GET_CLASSPARENTID
,
1185 TI_GET_LEXICALPARENT
,
1190 TI_GET_CALLING_CONVENTION
,
1191 } IMAGEHLP_SYMBOL_TYPE_INFO
;
1193 #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001
1194 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002
1195 typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS
1203 IMAGEHLP_SYMBOL_TYPE_INFO
* ReqKinds
;
1204 PULONG_PTR ReqOffsets
;
1206 ULONG_PTR ReqStride
;
1207 ULONG_PTR BufferSize
;
1209 ULONG EntriesMatched
;
1210 ULONG EntriesFilled
;
1212 ULONG64 AllReqsValid
;
1215 } IMAGEHLP_GET_TYPE_INFO_PARAMS
, *PIMAGEHLP_GET_TYPE_INFO_PARAMS
;
1217 typedef struct _TI_FINDCHILDREN_PARAMS
1222 } TI_FINDCHILDREN_PARAMS
;
1224 #define UNDNAME_COMPLETE (0x0000)
1225 #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)
1226 #define UNDNAME_NO_MS_KEYWORDS (0x0002)
1227 #define UNDNAME_NO_FUNCTION_RETURNS (0x0004)
1228 #define UNDNAME_NO_ALLOCATION_MODEL (0x0008)
1229 #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)
1230 #define UNDNAME_NO_MS_THISTYPE (0x0020)
1231 #define UNDNAME_NO_CV_THISTYPE (0x0040)
1232 #define UNDNAME_NO_THISTYPE (0x0060)
1233 #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)
1234 #define UNDNAME_NO_THROW_SIGNATURES (0x0100)
1235 #define UNDNAME_NO_MEMBER_TYPE (0x0200)
1236 #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)
1237 #define UNDNAME_32_BIT_DECODE (0x0800)
1238 #define UNDNAME_NAME_ONLY (0x1000)
1239 #define UNDNAME_NO_ARGUMENTS (0x2000)
1240 #define UNDNAME_NO_SPECIAL_SYMS (0x4000)
1242 #define SYMSEARCH_MASKOBJS 0x01
1243 #define SYMSEARCH_RECURSE 0x02
1244 #define SYMSEARCH_GLOBALSONLY 0x04
1252 _In_ IMAGEHLP_SYMBOL_TYPE_INFO
,
1260 _Inout_ PIMAGEHLP_GET_TYPE_INFO_PARAMS
);
1263 (CALLBACK
*PSYM_ENUMERATESYMBOLS_CALLBACK
)(
1269 (CALLBACK
*PSYM_ENUMERATESYMBOLS_CALLBACKW
)(
1279 _In_ PSYM_ENUMERATESYMBOLS_CALLBACK
,
1287 _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW
,
1296 _Inout_ SYMBOL_INFO
*);
1304 _Inout_ SYMBOL_INFOW
*);
1312 _Inout_ PSYMBOL_INFO
);
1320 _Inout_ PSYMBOL_INFOW
);
1322 BOOL WINAPI
SymFromName(_In_ HANDLE
, _In_ PCSTR
, _Inout_ PSYMBOL_INFO
);
1323 BOOL WINAPI
SymFromNameW(_In_ HANDLE
, _In_ PCWSTR
, _Inout_ PSYMBOL_INFOW
);
1327 SymGetSymFromAddr64(
1331 _Inout_ PIMAGEHLP_SYMBOL64
);
1335 SymGetSymFromName64(
1338 _Inout_ PIMAGEHLP_SYMBOL64
);
1346 _Inout_ PSYMBOL_INFO
);
1350 SymGetTypeFromNameW(
1354 _Inout_ PSYMBOL_INFOW
);
1356 BOOL WINAPI
SymGetSymNext64(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOL64
);
1357 BOOL WINAPI
SymGetSymNextW64(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOLW64
);
1358 BOOL WINAPI
SymGetSymPrev64(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOL64
);
1359 BOOL WINAPI
SymGetSymPrevW64(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOLW64
);
1366 _In_ PSYM_ENUMERATESYMBOLS_CALLBACK
,
1375 _In_ PSYM_ENUMERATESYMBOLS_CALLBACK
,
1384 _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW
,
1388 (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACK64
)(
1395 (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACK64W
)(
1403 SymEnumerateSymbols64(
1406 _In_ PSYM_ENUMSYMBOLS_CALLBACK64
,
1411 SymEnumerateSymbolsW64(
1414 _In_ PSYM_ENUMSYMBOLS_CALLBACK64W
,
1419 SymEnumSymbolsForAddr(
1422 _In_ PSYM_ENUMERATESYMBOLS_CALLBACK
,
1427 SymEnumSymbolsForAddrW(
1430 _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW
,
1434 (CALLBACK
*PSYMBOL_REGISTERED_CALLBACK64
)(
1442 SymRegisterCallback64(
1444 _In_ PSYMBOL_REGISTERED_CALLBACK64
,
1449 SymRegisterCallbackW64(
1451 _In_ PSYMBOL_REGISTERED_CALLBACK64
,
1457 _In_ PIMAGEHLP_SYMBOL64
,
1458 _Out_writes_(UnDecNameLength
) PSTR
,
1459 _In_ DWORD UnDecNameLength
);
1461 BOOL WINAPI
SymMatchString(_In_ PCSTR
, _In_ PCSTR
, _In_ BOOL
);
1462 BOOL WINAPI
SymMatchStringA(_In_ PCSTR
, _In_ PCSTR
, _In_ BOOL
);
1463 BOOL WINAPI
SymMatchStringW(_In_ PCWSTR
, _In_ PCWSTR
, _In_ BOOL
);
1474 _In_ PSYM_ENUMERATESYMBOLS_CALLBACK
,
1487 _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW
,
1493 UnDecorateSymbolName(
1495 _Out_writes_(maxStringLength
) PSTR
,
1496 _In_ DWORD maxStringLength
,
1501 UnDecorateSymbolNameW(
1503 _Out_writes_(maxStringLength
) PWSTR
,
1504 _In_ DWORD maxStringLength
,
1513 _Inout_ PSYMBOL_INFO
);
1521 _Inout_ PSYMBOL_INFOW
);
1529 _Inout_ PSYMBOL_INFO
);
1537 _Inout_ PSYMBOL_INFOW
);
1577 /*************************
1579 *************************/
1582 (CALLBACK
*PSYM_ENUMSOURCEFILES_CALLBACK
)(
1587 (CALLBACK
*PSYM_ENUMSOURCEFILES_CALLBACKW
)(
1597 _In_ PSYM_ENUMSOURCEFILES_CALLBACK
,
1602 SymEnumSourceFilesW(
1606 _In_ PSYM_ENUMSOURCEFILES_CALLBACKW
,
1611 SymGetLineFromAddr64(
1615 _Out_ PIMAGEHLP_LINE64
);
1619 SymGetLineFromAddrW64(
1623 _Out_ PIMAGEHLP_LINEW64
);
1625 BOOL WINAPI
SymGetLinePrev64(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINE64
);
1626 BOOL WINAPI
SymGetLinePrevW64(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINEW64
);
1627 BOOL WINAPI
SymGetLineNext64(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINE64
);
1628 BOOL WINAPI
SymGetLineNextW64(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINEW64
);
1632 SymGetLineFromName64(
1638 _Inout_ PIMAGEHLP_LINE64
);
1642 SymGetLineFromNameW64(
1648 _Inout_ PIMAGEHLP_LINEW64
);
1652 SymGetFileLineOffsets64(
1656 _Out_writes_(BufferLines
) PDWORD64
,
1657 _In_ ULONG BufferLines
);
1666 _Out_writes_(Size
) PSTR
,
1676 _Out_writes_(Size
) PWSTR
,
1681 SymGetSourceFileToken(
1690 SymGetSourceFileTokenW(
1699 SymGetSourceFileFromToken(
1703 _Out_writes_(Size
) PSTR
,
1708 SymGetSourceFileFromTokenW(
1712 _Out_writes_(Size
) PWSTR
,
1717 SymGetSourceVarFromToken(
1722 _Out_writes_(Size
) PSTR
,
1727 SymGetSourceVarFromTokenW(
1732 _Out_writes_(Size
) PWSTR
,
1735 typedef struct _SRCCODEINFO
1740 CHAR Obj
[MAX_PATH
+1];
1741 CHAR FileName
[MAX_PATH
+1];
1744 } SRCCODEINFO
, *PSRCCODEINFO
;
1746 typedef struct _SRCCODEINFOW
1751 WCHAR Obj
[MAX_PATH
+1];
1752 WCHAR FileName
[MAX_PATH
+1];
1755 } SRCCODEINFOW
, *PSRCCODEINFOW
;
1758 (CALLBACK
* PSYM_ENUMLINES_CALLBACK
)(
1763 (CALLBACK
* PSYM_ENUMLINES_CALLBACKW
)(
1774 _In_ PSYM_ENUMLINES_CALLBACK
,
1784 _In_ PSYM_ENUMLINES_CALLBACKW
,
1796 _In_ PSYM_ENUMLINES_CALLBACK
,
1801 SymEnumSourceLinesW(
1808 _In_ PSYM_ENUMLINES_CALLBACKW
,
1811 /*************************
1812 * File & image handling *
1813 *************************/
1815 BOOL WINAPI
SymInitialize(_In_ HANDLE
, _In_opt_ PCSTR
, _In_ BOOL
);
1816 BOOL WINAPI
SymInitializeW(_In_ HANDLE
, _In_opt_ PCWSTR
, _In_ BOOL
);
1817 BOOL WINAPI
SymCleanup(_In_ HANDLE
);
1824 _Out_writes_(MAX_PATH
+ 1) PSTR
);
1827 (CALLBACK
*PFIND_DEBUG_FILE_CALLBACK
)(
1833 (CALLBACK
*PFIND_DEBUG_FILE_CALLBACKW
)(
1840 FindDebugInfoFileEx(
1843 _Out_writes_(MAX_PATH
+ 1) PSTR
,
1844 _In_opt_ PFIND_DEBUG_FILE_CALLBACK
,
1849 FindDebugInfoFileExW(
1852 _Out_writes_(MAX_PATH
+ 1) PWSTR
,
1853 _In_opt_ PFIND_DEBUG_FILE_CALLBACKW
,
1858 SymFindDebugInfoFile(
1861 _Out_writes_(MAX_PATH
+ 1) PSTR
,
1862 _In_opt_ PFIND_DEBUG_FILE_CALLBACK
,
1867 SymFindDebugInfoFileW(
1870 _Out_writes_(MAX_PATH
+ 1) PWSTR
,
1871 _In_opt_ PFIND_DEBUG_FILE_CALLBACKW
,
1875 (CALLBACK
*PFINDFILEINPATHCALLBACK
)(
1880 (CALLBACK
*PFINDFILEINPATHCALLBACKW
)(
1884 BOOL WINAPI
FindFileInPath(HANDLE
, PCSTR
, PCSTR
, PVOID
, DWORD
, DWORD
, DWORD
,
1885 PSTR
, PFINDFILEINPATHCALLBACK
, PVOID
);
1897 _Out_writes_(MAX_PATH
+ 1) PSTR
,
1898 _In_opt_ PFINDFILEINPATHCALLBACK
,
1911 _Out_writes_(MAX_PATH
+ 1) PWSTR
,
1912 _In_opt_ PFINDFILEINPATHCALLBACKW
,
1917 FindExecutableImage(
1920 _Out_writes_(MAX_PATH
+ 1) PSTR
);
1923 (CALLBACK
*PFIND_EXE_FILE_CALLBACK
)(
1929 (CALLBACK
*PFIND_EXE_FILE_CALLBACKW
)(
1936 FindExecutableImageEx(
1939 _Out_writes_(MAX_PATH
+ 1) PSTR
,
1940 _In_opt_ PFIND_EXE_FILE_CALLBACK
,
1945 FindExecutableImageExW(
1948 _Out_writes_(MAX_PATH
+ 1) PWSTR
,
1949 _In_opt_ PFIND_EXE_FILE_CALLBACKW
,
1954 SymFindExecutableImage(
1957 _Out_writes_(MAX_PATH
+ 1) PSTR
,
1958 _In_ PFIND_EXE_FILE_CALLBACK
,
1963 SymFindExecutableImageW(
1966 _Out_writes_(MAX_PATH
+ 1) PWSTR
,
1967 _In_ PFIND_EXE_FILE_CALLBACKW
,
1970 PIMAGE_NT_HEADERS WINAPI
ImageNtHeader(_In_ PVOID
);
1974 ImageDirectoryEntryToDataEx(
1979 _Out_opt_ PIMAGE_SECTION_HEADER
*);
1983 ImageDirectoryEntryToData(
1989 PIMAGE_SECTION_HEADER
1992 _In_ PIMAGE_NT_HEADERS
,
1999 _In_ PIMAGE_NT_HEADERS
,
2002 _In_opt_ PIMAGE_SECTION_HEADER
*);
2008 _Out_writes_(SearchPathLength
) PSTR
,
2009 _In_ DWORD SearchPathLength
);
2015 _Out_writes_(SearchPathLength
) PWSTR
,
2016 _In_ DWORD SearchPathLength
);
2018 BOOL WINAPI
SymSetSearchPath(_In_ HANDLE
, _In_opt_ PCSTR
);
2019 BOOL WINAPI
SymSetSearchPathW(_In_ HANDLE
, _In_opt_ PCWSTR
);
2020 DWORD WINAPI
GetTimestampForLoadedLibrary(_In_ HMODULE
);
2021 BOOL WINAPI
MakeSureDirectoryPathExists(_In_ PCSTR
);
2028 _Out_writes_(MAX_PATH
+ 1) PSTR
);
2035 _Out_writes_(MAX_PATH
+ 1) PWSTR
);
2038 (CALLBACK
*PENUMDIRTREE_CALLBACK
)(
2043 (CALLBACK
*PENUMDIRTREE_CALLBACKW
)(
2053 _Out_writes_opt_(MAX_PATH
+ 1) PSTR
,
2054 _In_opt_ PENUMDIRTREE_CALLBACK
,
2063 _Out_writes_opt_(MAX_PATH
+ 1) PWSTR
,
2064 _In_opt_ PENUMDIRTREE_CALLBACKW
,
2073 _Outptr_opt_ PSTR
*);
2080 _Outptr_opt_ PWSTR
*,
2081 _Outptr_opt_ PWSTR
*);
2083 PCHAR WINAPI
SymSetHomeDirectory(_In_opt_ HANDLE
, _In_opt_ PCSTR
);
2084 PWSTR WINAPI
SymSetHomeDirectoryW(_In_opt_ HANDLE
, _In_opt_ PCWSTR
);
2088 SymGetHomeDirectory(
2090 _Out_writes_(size
) PSTR
,
2095 SymGetHomeDirectoryW(
2097 _Out_writes_(size
) PWSTR
,
2105 /*************************
2106 * Context management *
2107 *************************/
2113 _In_ PIMAGEHLP_STACK_FRAME
,
2114 _In_opt_ PIMAGEHLP_CONTEXT
);
2117 /*************************
2118 * Stack management *
2119 *************************/
2121 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
2122 #define KDHELP KDHELP64
2123 #define PKDHELP PKDHELP64
2125 typedef struct _KDHELP
2128 DWORD ThCallbackStack
;
2131 DWORD KiCallUserMode
;
2132 DWORD KeUserCallbackDispatcher
;
2133 DWORD SystemRangeStart
;
2137 typedef struct _KDHELP64
2140 DWORD ThCallbackStack
;
2141 DWORD ThCallbackBStore
;
2144 DWORD64 KiCallUserMode
;
2145 DWORD64 KeUserCallbackDispatcher
;
2146 DWORD64 SystemRangeStart
;
2147 DWORD64 Reserved
[8];
2148 } KDHELP64
, *PKDHELP64
;
2150 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
2151 #define STACKFRAME STACKFRAME64
2152 #define LPSTACKFRAME LPSTACKFRAME64
2154 typedef struct _STACKFRAME
2160 PVOID FuncTableEntry
;
2167 } STACKFRAME
, *LPSTACKFRAME
;
2170 typedef struct _STACKFRAME64
2173 ADDRESS64 AddrReturn
;
2174 ADDRESS64 AddrFrame
;
2175 ADDRESS64 AddrStack
;
2176 ADDRESS64 AddrBStore
;
2177 PVOID FuncTableEntry
;
2181 DWORD64 Reserved
[3];
2183 } STACKFRAME64
, *LPSTACKFRAME64
;
2186 (CALLBACK
*PREAD_PROCESS_MEMORY_ROUTINE64
)(
2189 _Out_writes_bytes_(nSize
) PVOID
,
2194 (CALLBACK
*PFUNCTION_TABLE_ACCESS_ROUTINE64
)(
2199 (CALLBACK
*PGET_MODULE_BASE_ROUTINE64
)(
2204 (CALLBACK
*PTRANSLATE_ADDRESS_ROUTINE64
)(
2215 _Inout_ LPSTACKFRAME64
,
2217 _In_opt_ PREAD_PROCESS_MEMORY_ROUTINE64
,
2218 _In_opt_ PFUNCTION_TABLE_ACCESS_ROUTINE64
,
2219 _In_opt_ PGET_MODULE_BASE_ROUTINE64
,
2220 _In_opt_ PTRANSLATE_ADDRESS_ROUTINE64
);
2222 PVOID WINAPI
SymFunctionTableAccess64(_In_ HANDLE
, _In_ DWORD64
);
2225 (CALLBACK
*PSYMBOL_FUNCENTRY_CALLBACK64
)(
2232 SymRegisterFunctionEntryCallback64(
2234 _In_ PSYMBOL_FUNCENTRY_CALLBACK64
,
2237 /*************************
2238 * Version, global stuff *
2239 *************************/
2241 #define API_VERSION_NUMBER 9
2243 typedef struct API_VERSION
2245 USHORT MajorVersion
;
2246 USHORT MinorVersion
;
2249 } API_VERSION
, *LPAPI_VERSION
;
2251 LPAPI_VERSION WINAPI
ImagehlpApiVersion(void);
2252 LPAPI_VERSION WINAPI
ImagehlpApiVersionEx(_In_ LPAPI_VERSION
);
2254 typedef struct _IMAGE_DEBUG_INFORMATION
2258 PVOID ReservedMappedBase
;
2259 USHORT ReservedMachine
;
2260 USHORT ReservedCharacteristics
;
2261 DWORD ReservedCheckSum
;
2264 DWORD ReservedNumberOfSections
;
2265 PIMAGE_SECTION_HEADER ReservedSections
;
2266 DWORD ReservedExportedNamesSize
;
2267 PSTR ReservedExportedNames
;
2268 DWORD ReservedNumberOfFunctionTableEntries
;
2269 PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries
;
2270 DWORD ReservedLowestFunctionStartingAddress
;
2271 DWORD ReservedHighestFunctionEndingAddress
;
2272 DWORD ReservedNumberOfFpoTableEntries
;
2273 PFPO_DATA ReservedFpoTableEntries
;
2274 DWORD SizeOfCoffSymbols
;
2275 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols
;
2276 DWORD ReservedSizeOfCodeViewSymbols
;
2277 PVOID ReservedCodeViewSymbols
;
2280 PSTR ReservedDebugFilePath
;
2281 DWORD ReservedTimeDateStamp
;
2282 BOOL ReservedRomImage
;
2283 PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory
;
2284 DWORD ReservedNumberOfDebugDirectories
;
2285 DWORD ReservedOriginalFunctionTableBaseAddress
;
2286 DWORD Reserved
[ 2 ];
2287 } IMAGE_DEBUG_INFORMATION
, *PIMAGE_DEBUG_INFORMATION
;
2290 PIMAGE_DEBUG_INFORMATION
2292 MapDebugInformation(
2298 BOOL WINAPI
UnmapDebugInformation(_Out_ PIMAGE_DEBUG_INFORMATION
);
2300 DWORD WINAPI
SymGetOptions(void);
2301 DWORD WINAPI
SymSetOptions(_In_ DWORD
);
2303 BOOL WINAPI
SymSetParentWindow(_In_ HWND
);
2308 _In_opt_ HANDLE hProcess
,
2314 _In_opt_ HANDLE hProcess
,
2317 /*************************
2318 * Version, global stuff *
2319 *************************/
2321 typedef BOOL (WINAPI
* PSYMBOLSERVERPROC
)(PCSTR
, PCSTR
, PVOID
, DWORD
, DWORD
, PSTR
);
2322 typedef BOOL (WINAPI
* PSYMBOLSERVERPROCA
)(PCSTR
, PCSTR
, PVOID
, DWORD
, DWORD
, PSTR
);
2323 typedef BOOL (WINAPI
* PSYMBOLSERVERPROCW
)(PCWSTR
, PCWSTR
, PVOID
, DWORD
, DWORD
, PWSTR
);
2324 typedef BOOL (WINAPI
* PSYMBOLSERVEROPENPROC
)(void);
2325 typedef BOOL (WINAPI
* PSYMBOLSERVERCLOSEPROC
)(void);
2326 typedef BOOL (WINAPI
* PSYMBOLSERVERSETOPTIONSPROC
)(UINT_PTR
, ULONG64
);
2327 typedef BOOL (CALLBACK
* PSYMBOLSERVERCALLBACKPROC
)(UINT_PTR
, ULONG64
, ULONG64
);
2328 typedef UINT_PTR (WINAPI
* PSYMBOLSERVERGETOPTIONSPROC
)(void);
2329 typedef BOOL (WINAPI
* PSYMBOLSERVERPINGPROC
)(PCSTR
);
2330 typedef BOOL (WINAPI
* PSYMBOLSERVERPINGPROCA
)(PCSTR
);
2331 typedef BOOL (WINAPI
* PSYMBOLSERVERPINGPROCW
)(PCWSTR
);
2333 #define SSRVOPT_CALLBACK 0x0001
2334 #define SSRVOPT_DWORD 0x0002
2335 #define SSRVOPT_DWORDPTR 0x0004
2336 #define SSRVOPT_GUIDPTR 0x0008
2337 #define SSRVOPT_OLDGUIDPTR 0x0010
2338 #define SSRVOPT_UNATTENDED 0x0020
2339 #define SSRVOPT_NOCOPY 0x0040
2340 #define SSRVOPT_PARENTWIN 0x0080
2341 #define SSRVOPT_PARAMTYPE 0x0100
2342 #define SSRVOPT_SECURE 0x0200
2343 #define SSRVOPT_TRACE 0x0400
2344 #define SSRVOPT_SETCONTEXT 0x0800
2345 #define SSRVOPT_PROXY 0x1000
2346 #define SSRVOPT_DOWNSTREAM_STORE 0x2000
2347 #define SSRVOPT_RESET ((ULONG_PTR)-1)
2349 #define SSRVACTION_TRACE 1
2350 #define SSRVACTION_QUERYCANCEL 2
2351 #define SSRVACTION_EVENT 3
2353 /* 32-bit functions */
2355 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
2357 #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64
2358 #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
2359 #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
2360 #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
2361 #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
2362 #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
2363 #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64
2364 #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
2365 #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACKW64
2366 #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
2368 #define EnumerateLoadedModules EnumerateLoadedModules64
2369 #define StackWalk StackWalk64
2370 #define SymEnumerateModules SymEnumerateModules64
2371 #define SymEnumerateSymbols SymEnumerateSymbols64
2372 #define SymEnumerateSymbolsW SymEnumerateSymbolsW64
2373 #define SymFunctionTableAccess SymFunctionTableAccess64
2374 #define SymGetLineFromAddr SymGetLineFromAddr64
2375 #define SymGetLineFromAddrW SymGetLineFromAddrW64
2376 #define SymGetLineFromName SymGetLineFromName64
2377 #define SymGetLineNext SymGetLineNext64
2378 #define SymGetLineNextW SymGetLineNextW64
2379 #define SymGetLinePrev SymGetLinePrev64
2380 #define SymGetLinePrevW SymGetLinePrevW64
2381 #define SymGetModuleBase SymGetModuleBase64
2382 #define SymGetModuleInfo SymGetModuleInfo64
2383 #define SymGetModuleInfoW SymGetModuleInfoW64
2384 #define SymGetSymFromAddr SymGetSymFromAddr64
2385 #define SymGetSymFromName SymGetSymFromName64
2386 #define SymGetSymNext SymGetSymNext64
2387 #define SymGetSymNextW SymGetSymNextW64
2388 #define SymGetSymPrev SymGetSymPrev64
2389 #define SymGetSymPrevW SymGetSymPrevW64
2390 #define SymLoadModule SymLoadModule64
2391 #define SymRegisterCallback SymRegisterCallback64
2392 #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
2393 #define SymUnDName SymUnDName64
2394 #define SymUnloadModule SymUnloadModule64
2399 (CALLBACK
*PENUMLOADED_MODULES_CALLBACK
)(
2406 (CALLBACK
*PFUNCTION_TABLE_ACCESS_ROUTINE
)(
2411 (CALLBACK
*PGET_MODULE_BASE_ROUTINE
)(
2416 (CALLBACK
*PREAD_PROCESS_MEMORY_ROUTINE
)(
2419 _Out_writes_bytes_(nSize
) PVOID
,
2424 (CALLBACK
*PSYM_ENUMMODULES_CALLBACK
)(
2430 (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACK
)(
2437 (CALLBACK
*PSYM_ENUMSYMBOLS_CALLBACKW
)(
2444 (CALLBACK
*PSYMBOL_REGISTERED_CALLBACK
)(
2451 (CALLBACK
*PSYMBOL_FUNCENTRY_CALLBACK
)(
2457 (CALLBACK
*PTRANSLATE_ADDRESS_ROUTINE
)(
2464 EnumerateLoadedModules(
2466 _In_ PENUMLOADED_MODULES_CALLBACK
,
2475 _Inout_ LPSTACKFRAME
,
2477 _In_opt_ PREAD_PROCESS_MEMORY_ROUTINE
,
2478 _In_opt_ PFUNCTION_TABLE_ACCESS_ROUTINE
,
2479 _In_opt_ PGET_MODULE_BASE_ROUTINE
,
2480 _In_opt_ PTRANSLATE_ADDRESS_ROUTINE
);
2484 SymEnumerateModules(
2486 _In_ PSYM_ENUMMODULES_CALLBACK
,
2491 SymEnumerateSymbols(
2494 _In_ PSYM_ENUMSYMBOLS_CALLBACK
,
2499 SymEnumerateSymbolsW(
2502 _In_ PSYM_ENUMSYMBOLS_CALLBACKW
,
2505 PVOID WINAPI
SymFunctionTableAccess(_In_ HANDLE
, _In_ DWORD
);
2513 _Out_ PIMAGEHLP_LINE
);
2517 SymGetLineFromAddrW(
2521 _Out_ PIMAGEHLP_LINEW
);
2531 _Inout_ PIMAGEHLP_LINE
);
2533 BOOL WINAPI
SymGetLineNext(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINE
);
2534 BOOL WINAPI
SymGetLineNextW(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINEW
);
2535 BOOL WINAPI
SymGetLinePrev(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINE
);
2536 BOOL WINAPI
SymGetLinePrevW(_In_ HANDLE
, _Inout_ PIMAGEHLP_LINEW
);
2537 DWORD WINAPI
SymGetModuleBase(_In_ HANDLE
, _In_ DWORD
);
2544 _Out_ PIMAGEHLP_MODULE
);
2551 _Out_ PIMAGEHLP_MODULEW
);
2559 _Inout_ PIMAGEHLP_SYMBOL
);
2566 _Inout_ PIMAGEHLP_SYMBOL
);
2568 BOOL WINAPI
SymGetSymNext(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOL
);
2569 BOOL WINAPI
SymGetSymNextW(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOLW
);
2570 BOOL WINAPI
SymGetSymPrev(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOL
);
2571 BOOL WINAPI
SymGetSymPrevW(_In_ HANDLE
, _Inout_ PIMAGEHLP_SYMBOLW
);
2585 SymRegisterCallback(
2587 _In_ PSYMBOL_REGISTERED_CALLBACK
,
2592 SymRegisterFunctionEntryCallback(
2594 _In_ PSYMBOL_FUNCENTRY_CALLBACK
,
2597 BOOL WINAPI
SymRefreshModuleList(_In_ HANDLE
);
2602 _In_ PIMAGEHLP_SYMBOL
,
2603 _Out_writes_(UnDecNameLength
) PSTR
,
2604 _In_ DWORD UnDecNameLength
);
2606 BOOL WINAPI
SymUnloadModule(_In_ HANDLE
, _In_ DWORD
);
2612 #endif /* defined(__cplusplus) */
2614 #endif /* __WINE_DBGHELP_H */