annotate src/win32/dbghelp.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1 /* BUILD Version: 0001 Increment this if a change has global effects
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
3 Copyright (c) Microsoft Corporation. All rights reserved.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
4
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
5 Module Name:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
6
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
7 dbghelp.h
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
8
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
9 Abstract:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
10
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
11 This module defines the prototypes and constants required for the image
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
12 help routines.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
13
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
14 Contains debugging support routines that are redistributable.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
15
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
16 Revision History:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
17
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
18 --*/
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
19
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
20 //#ifndef _DBGHELP_
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
21 //#define _DBGHELP_
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
22 module win32.dbghelp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
23
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
24 import win32.windef;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
25 import win32.winver;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
26
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
27 // As a general principal always call the 64 bit version
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
28 // of every API, if a choice exists. The 64 bit version
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
29 // works great on 32 bit platforms, and is forward
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
30 // compatible to 64 bit platforms.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
31
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
32 version(Win64) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
33 version = _IMAGEHLP64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
34 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
35
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
36
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
37 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
38
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
39 /+
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
40 #ifdef _IMAGEHLP_SOURCE_
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
41 #define IMAGEAPI __stdcall
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
42 #define DBHLP_DEPRECIATED
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
43 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
44 #define IMAGEAPI DECLSPEC_IMPORT __stdcall
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
45 #if (_MSC_VER >= 1300) && !defined(MIDL_PASS)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
46 #define DBHLP_DEPRECIATED __declspec(deprecated)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
47 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
48 #define DBHLP_DEPRECIATED
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
49 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
50 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
51
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
52 #define DBHLPAPI IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
53
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
54 #define IMAGE_SEPARATION (64*1024)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
55
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
56 typedef struct _LOADED_IMAGE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
57 PSTR ModuleName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
58 HANDLE hFile;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
59 PUCHAR MappedAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
60 #ifdef _IMAGEHLP64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
61 PIMAGE_NT_HEADERS64 FileHeader;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
62 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
63 PIMAGE_NT_HEADERS32 FileHeader;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
64 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
65 PIMAGE_SECTION_HEADER LastRvaSection;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
66 ULONG NumberOfSections;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
67 PIMAGE_SECTION_HEADER Sections;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
68 ULONG Characteristics;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
69 BOOLEAN fSystemImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
70 BOOLEAN fDOSImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
71 LIST_ENTRY Links;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
72 ULONG SizeOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
73 } LOADED_IMAGE, *PLOADED_IMAGE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
74
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
75 #define MAX_SYM_NAME 2000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
76
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
77
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
78 HANDLE
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
79 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
80 FindDebugInfoFile (
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
81 PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
82 PSTR SymbolPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
83 PSTR DebugFilePath
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
84 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
85
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
86 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
87 (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
88 HANDLE FileHandle,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
89 PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
90 PVOID CallerData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
91 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
92
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
93 HANDLE
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
94 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
95 FindDebugInfoFileEx (
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
96 PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
97 PSTR SymbolPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
98 PSTR DebugFilePath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
99 PFIND_DEBUG_FILE_CALLBACK Callback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
100 PVOID CallerData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
101 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
102
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
103 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
104 (CALLBACK *PFINDFILEINPATHCALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
105 PSTR filename,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
106 PVOID context
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
107 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
108
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
109 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
110 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
111 SymFindFileInPath(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
112 HANDLE hprocess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
113 LPSTR SearchPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
114 LPSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
115 PVOID id,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
116 DWORD two,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
117 DWORD three,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
118 DWORD flags,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
119 LPSTR FoundFile,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
120 PFINDFILEINPATHCALLBACK callback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
121 PVOID context
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
122 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
123
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
124 HANDLE
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
125 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
126 FindExecutableImage(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
127 PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
128 PSTR SymbolPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
129 PSTR ImageFilePath
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
130 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
131
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
132 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
133 (CALLBACK *PFIND_EXE_FILE_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
134 HANDLE FileHandle,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
135 PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
136 PVOID CallerData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
137 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
138
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
139 HANDLE
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
140 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
141 FindExecutableImageEx(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
142 PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
143 PSTR SymbolPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
144 PSTR ImageFilePath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
145 PFIND_EXE_FILE_CALLBACK Callback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
146 PVOID CallerData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
147 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
148
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
149 PIMAGE_NT_HEADERS
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
150 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
151 ImageNtHeader (
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
152 IN PVOID Base
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
153 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
154
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
155 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
156 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
157 ImageDirectoryEntryToDataEx (
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
158 IN PVOID Base,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
159 IN BOOLEAN MappedAsImage,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
160 IN USHORT DirectoryEntry,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
161 OUT PULONG Size,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
162 OUT PIMAGE_SECTION_HEADER *FoundHeader OPTIONAL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
163 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
164
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
165 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
166 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
167 ImageDirectoryEntryToData (
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
168 IN PVOID Base,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
169 IN BOOLEAN MappedAsImage,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
170 IN USHORT DirectoryEntry,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
171 OUT PULONG Size
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
172 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
173
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
174 PIMAGE_SECTION_HEADER
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
175 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
176 ImageRvaToSection(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
177 IN PIMAGE_NT_HEADERS NtHeaders,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
178 IN PVOID Base,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
179 IN ULONG Rva
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
180 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
181
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
182 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
183 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
184 ImageRvaToVa(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
185 IN PIMAGE_NT_HEADERS NtHeaders,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
186 IN PVOID Base,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
187 IN ULONG Rva,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
188 IN OUT PIMAGE_SECTION_HEADER *LastRvaSection
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
189 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
190
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
191 // Symbol server exports
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
192
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
193 typedef BOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR, LPCSTR, PVOID, DWORD, DWORD, LPSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
194 typedef BOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
195 typedef BOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
196 typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
197 typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action, ULONG64 data, ULONG64 context);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
198 typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)();
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
199 typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
200
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
201 #define SSRVOPT_CALLBACK 0x001
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
202 #define SSRVOPT_DWORD 0x002
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
203 #define SSRVOPT_DWORDPTR 0x004
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
204 #define SSRVOPT_GUIDPTR 0x008
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
205 #define SSRVOPT_OLDGUIDPTR 0x010
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
206 #define SSRVOPT_UNATTENDED 0x020
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
207 #define SSRVOPT_NOCOPY 0x040
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
208 #define SSRVOPT_PARENTWIN 0x080
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
209 #define SSRVOPT_PARAMTYPE 0x100
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
210 #define SSRVOPT_SECURE 0x200
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
211 #define SSRVOPT_TRACE 0x400
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
212 #define SSRVOPT_RESET ((ULONG_PTR)-1)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
213
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
214 #define SSRVACTION_TRACE 1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
215
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
216
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
217 #ifndef _WIN64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
218 // This api won't be ported to Win64 - Fix your code.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
219
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
220 typedef struct _IMAGE_DEBUG_INFORMATION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
221 LIST_ENTRY List;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
222 DWORD ReservedSize;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
223 PVOID ReservedMappedBase;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
224 USHORT ReservedMachine;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
225 USHORT ReservedCharacteristics;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
226 DWORD ReservedCheckSum;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
227 DWORD ImageBase;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
228 DWORD SizeOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
229
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
230 DWORD ReservedNumberOfSections;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
231 PIMAGE_SECTION_HEADER ReservedSections;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
232
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
233 DWORD ReservedExportedNamesSize;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
234 PSTR ReservedExportedNames;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
235
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
236 DWORD ReservedNumberOfFunctionTableEntries;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
237 PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
238 DWORD ReservedLowestFunctionStartingAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
239 DWORD ReservedHighestFunctionEndingAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
240
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
241 DWORD ReservedNumberOfFpoTableEntries;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
242 PFPO_DATA ReservedFpoTableEntries;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
243
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
244 DWORD SizeOfCoffSymbols;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
245 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
246
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
247 DWORD ReservedSizeOfCodeViewSymbols;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
248 PVOID ReservedCodeViewSymbols;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
249
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
250 PSTR ImageFilePath;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
251 PSTR ImageFileName;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
252 PSTR ReservedDebugFilePath;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
253
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
254 DWORD ReservedTimeDateStamp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
255
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
256 BOOL ReservedRomImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
257 PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
258 DWORD ReservedNumberOfDebugDirectories;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
259
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
260 DWORD ReservedOriginalFunctionTableBaseAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
261
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
262 DWORD Reserved[ 2 ];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
263
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
264 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
265
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
266
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
267 PIMAGE_DEBUG_INFORMATION
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
268 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
269 MapDebugInformation(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
270 HANDLE FileHandle,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
271 PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
272 PSTR SymbolPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
273 DWORD ImageBase
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
274 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
275
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
276 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
277 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
278 UnmapDebugInformation(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
279 PIMAGE_DEBUG_INFORMATION DebugInfo
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
280 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
281
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
282 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
283
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
284 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
285 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
286 SearchTreeForFile(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
287 PSTR RootPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
288 PSTR InputPathName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
289 PSTR OutputPathBuffer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
290 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
291
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
292 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
293 (CALLBACK *PENUMDIRTREE_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
294 LPCSTR FilePath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
295 PVOID CallerData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
296 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
297
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
298 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
299 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
300 EnumDirTree(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
301 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
302 PSTR RootPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
303 PSTR InputPathName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
304 PSTR OutputPathBuffer,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
305 PENUMDIRTREE_CALLBACK Callback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
306 PVOID CallbackData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
307 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
308
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
309 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
310 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
311 MakeSureDirectoryPathExists(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
312 PCSTR DirPath
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
313 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
314
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
315 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
316 // UnDecorateSymbolName Flags
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
317 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
318
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
319 #define UNDNAME_COMPLETE (0x0000) // Enable full undecoration
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
320 #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001) // Remove leading underscores from MS extended keywords
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
321 #define UNDNAME_NO_MS_KEYWORDS (0x0002) // Disable expansion of MS extended keywords
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
322 #define UNDNAME_NO_FUNCTION_RETURNS (0x0004) // Disable expansion of return type for primary declaration
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
323 #define UNDNAME_NO_ALLOCATION_MODEL (0x0008) // Disable expansion of the declaration model
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
324 #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010) // Disable expansion of the declaration language specifier
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
325 #define UNDNAME_NO_MS_THISTYPE (0x0020) // NYI Disable expansion of MS keywords on the 'this' type for primary declaration
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
326 #define UNDNAME_NO_CV_THISTYPE (0x0040) // NYI Disable expansion of CV modifiers on the 'this' type for primary declaration
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
327 #define UNDNAME_NO_THISTYPE (0x0060) // Disable all modifiers on the 'this' type
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
328 #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080) // Disable expansion of access specifiers for members
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
329 #define UNDNAME_NO_THROW_SIGNATURES (0x0100) // Disable expansion of 'throw-signatures' for functions and pointers to functions
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
330 #define UNDNAME_NO_MEMBER_TYPE (0x0200) // Disable expansion of 'static' or 'virtual'ness of members
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
331 #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400) // Disable expansion of MS model for UDT returns
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
332 #define UNDNAME_32_BIT_DECODE (0x0800) // Undecorate 32-bit decorated names
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
333 #define UNDNAME_NAME_ONLY (0x1000) // Crack only the name for primary declaration;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
334 // return just [scope::]name. Does expand template params
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
335 #define UNDNAME_NO_ARGUMENTS (0x2000) // Don't undecorate arguments to function
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
336 #define UNDNAME_NO_SPECIAL_SYMS (0x4000) // Don't undecorate special names (v-table, vcall, vector xxx, metatype, etc)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
337
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
338 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
339 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
340 WINAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
341 UnDecorateSymbolName(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
342 PCSTR DecoratedName, // Name to undecorate
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
343 PSTR UnDecoratedName, // If NULL, it will be allocated
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
344 DWORD UndecoratedLength, // The maximym length
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
345 DWORD Flags // See above.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
346 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
347
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
348
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
349 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
350 // these values are used for synthesized file types
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
351 // that can be passed in as image headers instead of
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
352 // the standard ones from ntimage.h
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
353 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
354
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
355 #define DBHHEADER_DEBUGDIRS 0x1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
356
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
357 typedef struct _MODLOAD_DATA {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
358 DWORD ssize; // size of this struct
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
359 DWORD ssig; // signature identifying the passed data
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
360 PVOID data; // pointer to passed data
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
361 DWORD size; // size of passed data
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
362 DWORD flags; // options
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
363 } MODLOAD_DATA, *PMODLOAD_DATA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
364
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
365 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
366 // StackWalking API
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
367 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
368
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
369 typedef enum {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
370 AddrMode1616,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
371 AddrMode1632,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
372 AddrModeReal,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
373 AddrModeFlat
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
374 } ADDRESS_MODE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
375
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
376 typedef struct _tagADDRESS64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
377 DWORD64 Offset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
378 WORD Segment;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
379 ADDRESS_MODE Mode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
380 } ADDRESS64, *LPADDRESS64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
381
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
382 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
383 #define ADDRESS ADDRESS64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
384 #define LPADDRESS LPADDRESS64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
385 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
386 typedef struct _tagADDRESS {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
387 DWORD Offset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
388 WORD Segment;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
389 ADDRESS_MODE Mode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
390 } ADDRESS, *LPADDRESS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
391
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
392 __inline
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
393 void
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
394 Address32To64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
395 LPADDRESS a32,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
396 LPADDRESS64 a64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
397 )
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
398 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
399 a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
400 a64->Segment = a32->Segment;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
401 a64->Mode = a32->Mode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
402 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
403
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
404 __inline
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
405 void
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
406 Address64To32(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
407 LPADDRESS64 a64,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
408 LPADDRESS a32
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
409 )
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
410 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
411 a32->Offset = (ULONG)a64->Offset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
412 a32->Segment = a64->Segment;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
413 a32->Mode = a64->Mode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
414 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
415 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
416
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
417 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
418 // This structure is included in the STACKFRAME structure,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
419 // and is used to trace through usermode callbacks in a thread's
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
420 // kernel stack. The values must be copied by the kernel debugger
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
421 // from the DBGKD_GET_VERSION and WAIT_STATE_CHANGE packets.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
422 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
423
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
424 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
425 // New KDHELP structure for 64 bit system support.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
426 // This structure is preferred in new code.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
427 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
428 typedef struct _KDHELP64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
429
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
430 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
431 // address of kernel thread object, as provided in the
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
432 // WAIT_STATE_CHANGE packet.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
433 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
434 DWORD64 Thread;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
435
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
436 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
437 // offset in thread object to pointer to the current callback frame
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
438 // in kernel stack.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
439 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
440 DWORD ThCallbackStack;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
441
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
442 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
443 // offset in thread object to pointer to the current callback backing
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
444 // store frame in kernel stack.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
445 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
446 DWORD ThCallbackBStore;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
447
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
448 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
449 // offsets to values in frame:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
450 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
451 // address of next callback frame
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
452 DWORD NextCallback;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
453
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
454 // address of saved frame pointer (if applicable)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
455 DWORD FramePointer;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
456
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
457
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
458 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
459 // Address of the kernel function that calls out to user mode
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
460 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
461 DWORD64 KiCallUserMode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
462
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
463 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
464 // Address of the user mode dispatcher function
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
465 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
466 DWORD64 KeUserCallbackDispatcher;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
467
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
468 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
469 // Lowest kernel mode address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
470 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
471 DWORD64 SystemRangeStart;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
472
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
473 DWORD64 Reserved[8];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
474
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
475 } KDHELP64, *PKDHELP64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
476
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
477 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
478 #define KDHELP KDHELP64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
479 #define PKDHELP PKDHELP64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
480 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
481 typedef struct _KDHELP {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
482
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
483 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
484 // address of kernel thread object, as provided in the
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
485 // WAIT_STATE_CHANGE packet.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
486 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
487 DWORD Thread;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
488
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
489 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
490 // offset in thread object to pointer to the current callback frame
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
491 // in kernel stack.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
492 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
493 DWORD ThCallbackStack;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
494
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
495 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
496 // offsets to values in frame:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
497 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
498 // address of next callback frame
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
499 DWORD NextCallback;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
500
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
501 // address of saved frame pointer (if applicable)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
502 DWORD FramePointer;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
503
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
504 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
505 // Address of the kernel function that calls out to user mode
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
506 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
507 DWORD KiCallUserMode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
508
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
509 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
510 // Address of the user mode dispatcher function
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
511 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
512 DWORD KeUserCallbackDispatcher;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
513
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
514 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
515 // Lowest kernel mode address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
516 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
517 DWORD SystemRangeStart;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
518
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
519 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
520 // offset in thread object to pointer to the current callback backing
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
521 // store frame in kernel stack.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
522 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
523 DWORD ThCallbackBStore;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
524
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
525 DWORD Reserved[8];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
526
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
527 } KDHELP, *PKDHELP;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
528
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
529 __inline
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
530 void
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
531 KdHelp32To64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
532 PKDHELP p32,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
533 PKDHELP64 p64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
534 )
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
535 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
536 p64->Thread = p32->Thread;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
537 p64->ThCallbackStack = p32->ThCallbackStack;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
538 p64->NextCallback = p32->NextCallback;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
539 p64->FramePointer = p32->FramePointer;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
540 p64->KiCallUserMode = p32->KiCallUserMode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
541 p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
542 p64->SystemRangeStart = p32->SystemRangeStart;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
543 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
544 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
545
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
546 typedef struct _tagSTACKFRAME64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
547 ADDRESS64 AddrPC; // program counter
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
548 ADDRESS64 AddrReturn; // return address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
549 ADDRESS64 AddrFrame; // frame pointer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
550 ADDRESS64 AddrStack; // stack pointer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
551 ADDRESS64 AddrBStore; // backing store pointer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
552 PVOID FuncTableEntry; // pointer to pdata/fpo or NULL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
553 DWORD64 Params[4]; // possible arguments to the function
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
554 BOOL Far; // WOW far call
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
555 BOOL Virtual; // is this a virtual frame?
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
556 DWORD64 Reserved[3];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
557 KDHELP64 KdHelp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
558 } STACKFRAME64, *LPSTACKFRAME64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
559
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
560 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
561 #define STACKFRAME STACKFRAME64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
562 #define LPSTACKFRAME LPSTACKFRAME64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
563 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
564 typedef struct _tagSTACKFRAME {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
565 ADDRESS AddrPC; // program counter
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
566 ADDRESS AddrReturn; // return address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
567 ADDRESS AddrFrame; // frame pointer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
568 ADDRESS AddrStack; // stack pointer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
569 PVOID FuncTableEntry; // pointer to pdata/fpo or NULL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
570 DWORD Params[4]; // possible arguments to the function
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
571 BOOL Far; // WOW far call
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
572 BOOL Virtual; // is this a virtual frame?
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
573 DWORD Reserved[3];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
574 KDHELP KdHelp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
575 ADDRESS AddrBStore; // backing store pointer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
576 } STACKFRAME, *LPSTACKFRAME;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
577 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
578
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
579
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
580 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
581 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
582 (__stdcall *PREAD_PROCESS_MEMORY_ROUTINE64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
583 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
584 DWORD64 qwBaseAddress,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
585 PVOID lpBuffer,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
586 DWORD nSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
587 LPDWORD lpNumberOfBytesRead
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
588 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
589
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
590 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
591 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
592 (__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
593 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
594 DWORD64 AddrBase
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
595 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
596
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
597 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
598 DWORD64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
599 (__stdcall *PGET_MODULE_BASE_ROUTINE64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
600 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
601 DWORD64 Address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
602 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
603
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
604 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
605 DWORD64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
606 (__stdcall *PTRANSLATE_ADDRESS_ROUTINE64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
607 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
608 HANDLE hThread,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
609 LPADDRESS64 lpaddr
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
610 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
611
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
612 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
613 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
614 StackWalk64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
615 DWORD MachineType,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
616 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
617 HANDLE hThread,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
618 LPSTACKFRAME64 StackFrame,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
619 PVOID ContextRecord,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
620 PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
621 PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
622 PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
623 PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
624 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
625
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
626 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
627
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
628 #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
629 #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
630 #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
631 #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
632
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
633 #define StackWalk StackWalk64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
634
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
635 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
636
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
637 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
638 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
639 (__stdcall *PREAD_PROCESS_MEMORY_ROUTINE)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
640 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
641 DWORD lpBaseAddress,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
642 PVOID lpBuffer,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
643 DWORD nSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
644 PDWORD lpNumberOfBytesRead
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
645 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
646
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
647 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
648 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
649 (__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
650 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
651 DWORD AddrBase
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
652 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
653
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
654 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
655 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
656 (__stdcall *PGET_MODULE_BASE_ROUTINE)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
657 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
658 DWORD Address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
659 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
660
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
661 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
662 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
663 (__stdcall *PTRANSLATE_ADDRESS_ROUTINE)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
664 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
665 HANDLE hThread,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
666 LPADDRESS lpaddr
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
667 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
668
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
669 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
670 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
671 StackWalk(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
672 DWORD MachineType,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
673 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
674 HANDLE hThread,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
675 LPSTACKFRAME StackFrame,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
676 PVOID ContextRecord,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
677 PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
678 PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
679 PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
680 PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
681 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
682
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
683 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
684
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
685
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
686 #define API_VERSION_NUMBER 9
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
687
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
688 typedef struct API_VERSION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
689 USHORT MajorVersion;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
690 USHORT MinorVersion;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
691 USHORT Revision;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
692 USHORT Reserved;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
693 } API_VERSION, *LPAPI_VERSION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
694
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
695 LPAPI_VERSION
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
696 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
697 ImagehlpApiVersion(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
698 VOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
699 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
700
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
701 LPAPI_VERSION
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
702 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
703 ImagehlpApiVersionEx(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
704 LPAPI_VERSION AppVersion
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
705 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
706
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
707 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
708 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
709 GetTimestampForLoadedLibrary(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
710 HMODULE Module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
711 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
712
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
713 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
714 // typedefs for function pointers
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
715 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
716 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
717 (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
718 PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
719 DWORD64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
720 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
721 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
722
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
723 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
724 (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
725 PSTR SymbolName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
726 DWORD64 SymbolAddress,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
727 ULONG SymbolSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
728 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
729 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
730
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
731 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
732 (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
733 PWSTR SymbolName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
734 DWORD64 SymbolAddress,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
735 ULONG SymbolSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
736 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
737 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
738
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
739 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
740 (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
741 PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
742 DWORD64 ModuleBase,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
743 ULONG ModuleSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
744 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
745 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
746
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
747 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
748 (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
749 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
750 ULONG ActionCode,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
751 ULONG64 CallbackData,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
752 ULONG64 UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
753 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
754
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
755 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
756 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
757 (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
758 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
759 DWORD AddrBase,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
760 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
761 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
762
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
763 typedef
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
764 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
765 (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
766 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
767 ULONG64 AddrBase,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
768 ULONG64 UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
769 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
770
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
771 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
772
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
773 #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
774 #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
775 #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
776 #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
777 #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
778 #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
779
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
780 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
781
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
782 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
783 (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
784 PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
785 ULONG BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
786 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
787 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
788
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
789 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
790 (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
791 PSTR SymbolName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
792 ULONG SymbolAddress,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
793 ULONG SymbolSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
794 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
795 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
796
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
797 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
798 (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
799 PWSTR SymbolName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
800 ULONG SymbolAddress,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
801 ULONG SymbolSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
802 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
803 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
804
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
805 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
806 (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
807 PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
808 ULONG ModuleBase,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
809 ULONG ModuleSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
810 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
811 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
812
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
813 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
814 (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
815 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
816 ULONG ActionCode,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
817 PVOID CallbackData,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
818 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
819 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
820
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
821 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
822
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
823
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
824 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
825 // flags found in SYMBOL_INFO.Flags
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
826 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
827
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
828 #define SYMFLAG_VALUEPRESENT 0x00000001
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
829 #define SYMFLAG_REGISTER 0x00000008
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
830 #define SYMFLAG_REGREL 0x00000010
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
831 #define SYMFLAG_FRAMEREL 0x00000020
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
832 #define SYMFLAG_PARAMETER 0x00000040
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
833 #define SYMFLAG_LOCAL 0x00000080
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
834 #define SYMFLAG_CONSTANT 0x00000100
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
835 #define SYMFLAG_EXPORT 0x00000200
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
836 #define SYMFLAG_FORWARDER 0x00000400
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
837 #define SYMFLAG_FUNCTION 0x00000800
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
838 #define SYMFLAG_VIRTUAL 0x00001000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
839 #define SYMFLAG_THUNK 0x00002000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
840 #define SYMFLAG_TLSREL 0x00004000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
841
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
842 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
843 // symbol type enumeration
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
844 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
845 typedef enum {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
846 SymNone = 0,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
847 SymCoff,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
848 SymCv,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
849 SymPdb,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
850 SymExport,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
851 SymDeferred,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
852 SymSym, // .sym file
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
853 SymDia,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
854 SymVirtual,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
855 NumSymTypes
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
856 } SYM_TYPE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
857
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
858 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
859 // symbol data structure
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
860 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
861
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
862 typedef struct _IMAGEHLP_SYMBOL64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
863 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_SYMBOL64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
864 DWORD64 Address; // virtual address including dll base address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
865 DWORD Size; // estimated size of symbol, can be zero
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
866 DWORD Flags; // info about the symbols, see the SYMF defines
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
867 DWORD MaxNameLength; // maximum size of symbol name in 'Name'
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
868 CHAR Name[1]; // symbol name (null terminated string)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
869 } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
870
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
871 typedef struct _IMAGEHLP_SYMBOL64_PACKAGE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
872 IMAGEHLP_SYMBOL64 sym;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
873 CHAR name[MAX_SYM_NAME + 1];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
874 } IMAGEHLP_SYMBOL64_PACKAGE, *PIMAGEHLP_SYMBOL64_PACKAGE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
875
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
876 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
877
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
878 #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
879 #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
880 #define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
881 #define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
882
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
883 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
884
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
885 typedef struct _IMAGEHLP_SYMBOL {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
886 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_SYMBOL)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
887 DWORD Address; // virtual address including dll base address
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
888 DWORD Size; // estimated size of symbol, can be zero
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
889 DWORD Flags; // info about the symbols, see the SYMF defines
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
890 DWORD MaxNameLength; // maximum size of symbol name in 'Name'
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
891 CHAR Name[1]; // symbol name (null terminated string)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
892 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
893
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
894 typedef struct _IMAGEHLP_SYMBOL_PACKAGE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
895 IMAGEHLP_SYMBOL sym;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
896 CHAR name[MAX_SYM_NAME + 1];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
897 } IMAGEHLP_SYMBOL_PACKAGE, *PIMAGEHLP_SYMBOL_PACKAGE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
898
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
899 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
900
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
901 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
902 // module data structure
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
903 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
904
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
905 typedef struct _IMAGEHLP_MODULE64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
906 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
907 DWORD64 BaseOfImage; // base load address of module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
908 DWORD ImageSize; // virtual size of the loaded module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
909 DWORD TimeDateStamp; // date/time stamp from pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
910 DWORD CheckSum; // checksum from the pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
911 DWORD NumSyms; // number of symbols in the symbol table
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
912 SYM_TYPE SymType; // type of symbols loaded
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
913 CHAR ModuleName[32]; // module name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
914 CHAR ImageName[256]; // image name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
915 CHAR LoadedImageName[256]; // symbol file name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
916 } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
917
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
918 typedef struct _IMAGEHLP_MODULE64W {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
919 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
920 DWORD64 BaseOfImage; // base load address of module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
921 DWORD ImageSize; // virtual size of the loaded module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
922 DWORD TimeDateStamp; // date/time stamp from pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
923 DWORD CheckSum; // checksum from the pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
924 DWORD NumSyms; // number of symbols in the symbol table
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
925 SYM_TYPE SymType; // type of symbols loaded
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
926 WCHAR ModuleName[32]; // module name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
927 WCHAR ImageName[256]; // image name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
928 WCHAR LoadedImageName[256]; // symbol file name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
929 } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
930
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
931 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
932 #define IMAGEHLP_MODULE IMAGEHLP_MODULE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
933 #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
934 #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
935 #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
936 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
937 typedef struct _IMAGEHLP_MODULE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
938 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
939 DWORD BaseOfImage; // base load address of module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
940 DWORD ImageSize; // virtual size of the loaded module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
941 DWORD TimeDateStamp; // date/time stamp from pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
942 DWORD CheckSum; // checksum from the pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
943 DWORD NumSyms; // number of symbols in the symbol table
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
944 SYM_TYPE SymType; // type of symbols loaded
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
945 CHAR ModuleName[32]; // module name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
946 CHAR ImageName[256]; // image name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
947 CHAR LoadedImageName[256]; // symbol file name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
948 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
949
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
950 typedef struct _IMAGEHLP_MODULEW {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
951 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
952 DWORD BaseOfImage; // base load address of module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
953 DWORD ImageSize; // virtual size of the loaded module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
954 DWORD TimeDateStamp; // date/time stamp from pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
955 DWORD CheckSum; // checksum from the pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
956 DWORD NumSyms; // number of symbols in the symbol table
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
957 SYM_TYPE SymType; // type of symbols loaded
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
958 WCHAR ModuleName[32]; // module name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
959 WCHAR ImageName[256]; // image name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
960 WCHAR LoadedImageName[256]; // symbol file name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
961 } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
962 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
963
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
964 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
965 // source file line data structure
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
966 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
967
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
968 typedef struct _IMAGEHLP_LINE64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
969 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_LINE64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
970 PVOID Key; // internal
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
971 DWORD LineNumber; // line number in file
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
972 PCHAR FileName; // full filename
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
973 DWORD64 Address; // first instruction of line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
974 } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
975
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
976 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
977 #define IMAGEHLP_LINE IMAGEHLP_LINE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
978 #define PIMAGEHLP_LINE PIMAGEHLP_LINE64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
979 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
980 typedef struct _IMAGEHLP_LINE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
981 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_LINE)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
982 PVOID Key; // internal
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
983 DWORD LineNumber; // line number in file
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
984 PCHAR FileName; // full filename
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
985 DWORD Address; // first instruction of line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
986 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
987 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
988
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
989 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
990 // source file structure
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
991 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
992
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
993 typedef struct _SOURCEFILE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
994 DWORD64 ModBase; // base address of loaded module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
995 PCHAR FileName; // full filename of source
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
996 } SOURCEFILE, *PSOURCEFILE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
997
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
998 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
999 // data structures used for registered symbol callbacks
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1000 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1001
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1002 #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1003 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1004 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1005 #define CBA_SYMBOLS_UNLOADED 0x00000004
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1006 #define CBA_DUPLICATE_SYMBOL 0x00000005
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1007 #define CBA_READ_MEMORY 0x00000006
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1008 #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1009 #define CBA_SET_OPTIONS 0x00000008
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1010 #define CBA_EVENT 0x00000010
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1011 #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1012 #define CBA_DEBUG_INFO 0x10000000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1013
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1014 typedef struct _IMAGEHLP_CBA_READ_MEMORY {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1015 DWORD64 addr; // address to read from
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1016 PVOID buf; // buffer to read to
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1017 DWORD bytes; // amount of bytes to read
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1018 DWORD *bytesread; // pointer to store amount of bytes read
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1019 } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1020
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1021 enum {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1022 sevInfo = 0,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1023 sevProblem,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1024 sevAttn,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1025 sevFatal,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1026 sevMax // unused
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1027 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1028
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1029 typedef struct _IMAGEHLP_CBA_EVENT {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1030 DWORD severity; // values from sevInfo to sevFatal
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1031 DWORD code; // numerical code IDs the error
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1032 PCHAR desc; // may contain a text description of the error
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1033 PVOID object; // value dependant upon the error code
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1034 } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1035
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1036 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1037 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_LOAD64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1038 DWORD64 BaseOfImage; // base load address of module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1039 DWORD CheckSum; // checksum from the pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1040 DWORD TimeDateStamp; // date/time stamp from pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1041 CHAR FileName[MAX_PATH]; // symbols file or image name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1042 BOOLEAN Reparse; // load failure reparse
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1043 HANDLE hFile; // file handle, if passed
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1044 DWORD Flags; //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1045 } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1046
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1047 #define DSLFLAG_MISMATCHED_PDB 0x1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1048 #define DSLFLAG_MISMATCHED_DBG 0x2
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1049
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1050 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1051 #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1052 #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1053 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1054 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1055 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_LOAD)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1056 DWORD BaseOfImage; // base load address of module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1057 DWORD CheckSum; // checksum from the pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1058 DWORD TimeDateStamp; // date/time stamp from pe header
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1059 CHAR FileName[MAX_PATH]; // symbols file or image name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1060 BOOLEAN Reparse; // load failure reparse
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1061 HANDLE hFile; // file handle, if passed
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1062 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1063 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1064
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1065 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1066 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DUPLICATE_SYMBOL64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1067 DWORD NumberOfDups; // number of duplicates in the Symbol array
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1068 PIMAGEHLP_SYMBOL64 Symbol; // array of duplicate symbols
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1069 DWORD SelectedSymbol; // symbol selected (-1 to start)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1070 } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1071
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1072 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1073 #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1074 #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1075 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1076 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1077 DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DUPLICATE_SYMBOL)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1078 DWORD NumberOfDups; // number of duplicates in the Symbol array
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1079 PIMAGEHLP_SYMBOL Symbol; // array of duplicate symbols
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1080 DWORD SelectedSymbol; // symbol selected (-1 to start)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1081 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1082 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1083
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1084 // If dbghelp ever needs to display graphical UI, it will use this as the parent window.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1085
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1086 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1087 SymSetParentWindow(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1088 HWND hwnd
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1089 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1090
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1091 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1092 // options that are set/returned by SymSetOptions() & SymGetOptions()
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1093 // these are used as a mask
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1094 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1095 #define SYMOPT_CASE_INSENSITIVE 0x00000001
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1096 #define SYMOPT_UNDNAME 0x00000002
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1097 #define SYMOPT_DEFERRED_LOADS 0x00000004
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1098 #define SYMOPT_NO_CPP 0x00000008
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1099 #define SYMOPT_LOAD_LINES 0x00000010
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1100 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1101 #define SYMOPT_LOAD_ANYTHING 0x00000040
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1102 #define SYMOPT_IGNORE_CVREC 0x00000080
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1103 #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1104 #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1105 #define SYMOPT_EXACT_SYMBOLS 0x00000400
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1106 #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1107 #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1108 #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1109 #define SYMOPT_PUBLICS_ONLY 0x00004000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1110 #define SYMOPT_NO_PUBLICS 0x00008000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1111 #define SYMOPT_AUTO_PUBLICS 0x00010000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1112 #define SYMOPT_NO_IMAGE_SEARCH 0x00020000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1113 #define SYMOPT_SECURE 0x00040000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1114
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1115 #define SYMOPT_DEBUG 0x80000000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1116
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1117 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1118 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1119 SymSetOptions(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1120 IN DWORD SymOptions
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1121 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1122
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1123 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1124 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1125 SymGetOptions(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1126 VOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1127 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1128
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1129 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1130 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1131 SymCleanup(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1132 IN HANDLE hProcess
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1133 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1134
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1135 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1136 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1137 SymMatchString(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1138 IN LPSTR string,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1139 IN LPSTR expression,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1140 IN BOOL fCase
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1141 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1142
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1143 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1144 (CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1145 PSOURCEFILE pSourceFile,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1146 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1147 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1148
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1149 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1150 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1151 SymEnumSourceFiles(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1152 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1153 IN ULONG64 ModBase,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1154 IN LPSTR Mask,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1155 IN PSYM_ENUMSOURCFILES_CALLBACK cbSrcFiles,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1156 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1157 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1158
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1159 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1160 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1161 SymEnumerateModules64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1162 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1163 IN PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1164 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1165 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1166
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1167 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1168 #define SymEnumerateModules SymEnumerateModules64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1169 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1170 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1171 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1172 SymEnumerateModules(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1173 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1174 IN PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1175 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1176 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1177 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1178
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1179 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1180 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1181 SymEnumerateSymbols64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1182 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1183 IN DWORD64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1184 IN PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1185 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1186 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1187
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1188 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1189 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1190 SymEnumerateSymbolsW64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1191 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1192 IN DWORD64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1193 IN PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1194 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1195 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1196
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1197 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1198 #define SymEnumerateSymbols SymEnumerateSymbols64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1199 #define SymEnumerateSymbolsW SymEnumerateSymbolsW64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1200 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1201 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1202 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1203 SymEnumerateSymbols(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1204 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1205 IN DWORD BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1206 IN PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1207 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1208 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1209
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1210 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1211 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1212 SymEnumerateSymbolsW(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1213 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1214 IN DWORD BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1215 IN PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1216 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1217 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1218 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1219
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1220 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1221 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1222 EnumerateLoadedModules64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1223 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1224 IN PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1225 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1226 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1227
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1228 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1229 #define EnumerateLoadedModules EnumerateLoadedModules64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1230 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1231 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1232 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1233 EnumerateLoadedModules(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1234 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1235 IN PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1236 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1237 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1238 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1239
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1240 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1241 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1242 SymFunctionTableAccess64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1243 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1244 DWORD64 AddrBase
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1245 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1246
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1247 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1248 #define SymFunctionTableAccess SymFunctionTableAccess64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1249 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1250 PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1251 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1252 SymFunctionTableAccess(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1253 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1254 DWORD AddrBase
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1255 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1256 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1257
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1258 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1259 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1260 SymGetModuleInfo64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1261 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1262 IN DWORD64 qwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1263 OUT PIMAGEHLP_MODULE64 ModuleInfo
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1264 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1265
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1266 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1267 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1268 SymGetModuleInfoW64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1269 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1270 IN DWORD64 qwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1271 OUT PIMAGEHLP_MODULEW64 ModuleInfo
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1272 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1273
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1274 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1275 #define SymGetModuleInfo SymGetModuleInfo64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1276 #define SymGetModuleInfoW SymGetModuleInfoW64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1277 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1278 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1279 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1280 SymGetModuleInfo(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1281 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1282 IN DWORD dwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1283 OUT PIMAGEHLP_MODULE ModuleInfo
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1284 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1285
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1286 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1287 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1288 SymGetModuleInfoW(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1289 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1290 IN DWORD dwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1291 OUT PIMAGEHLP_MODULEW ModuleInfo
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1292 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1293 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1294
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1295 DWORD64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1296 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1297 SymGetModuleBase64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1298 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1299 IN DWORD64 qwAddr
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1300 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1301
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1302 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1303 #define SymGetModuleBase SymGetModuleBase64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1304 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1305 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1306 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1307 SymGetModuleBase(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1308 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1309 IN DWORD dwAddr
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1310 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1311 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1312
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1313 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1314 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1315 SymGetSymNext64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1316 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1317 IN OUT PIMAGEHLP_SYMBOL64 Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1318 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1319
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1320 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1321 #define SymGetSymNext SymGetSymNext64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1322 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1323 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1324 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1325 SymGetSymNext(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1326 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1327 IN OUT PIMAGEHLP_SYMBOL Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1328 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1329 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1330
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1331 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1332 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1333 SymGetSymPrev64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1334 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1335 IN OUT PIMAGEHLP_SYMBOL64 Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1336 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1337
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1338 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1339 #define SymGetSymPrev SymGetSymPrev64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1340 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1341 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1342 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1343 SymGetSymPrev(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1344 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1345 IN OUT PIMAGEHLP_SYMBOL Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1346 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1347 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1348
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1349 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1350 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1351 SymGetLineFromAddr64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1352 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1353 IN DWORD64 qwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1354 OUT PDWORD pdwDisplacement,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1355 OUT PIMAGEHLP_LINE64 Line64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1356 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1357
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1358 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1359 #define SymGetLineFromAddr SymGetLineFromAddr64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1360 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1361 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1362 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1363 SymGetLineFromAddr(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1364 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1365 IN DWORD dwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1366 OUT PDWORD pdwDisplacement,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1367 OUT PIMAGEHLP_LINE Line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1368 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1369 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1370
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1371 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1372 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1373 SymGetLineFromName64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1374 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1375 IN PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1376 IN PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1377 IN DWORD dwLineNumber,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1378 OUT PLONG plDisplacement,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1379 IN OUT PIMAGEHLP_LINE64 Line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1380 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1381
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1382 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1383 #define SymGetLineFromName SymGetLineFromName64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1384 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1385 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1386 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1387 SymGetLineFromName(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1388 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1389 IN PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1390 IN PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1391 IN DWORD dwLineNumber,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1392 OUT PLONG plDisplacement,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1393 IN OUT PIMAGEHLP_LINE Line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1394 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1395 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1396
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1397 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1398 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1399 SymGetLineNext64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1400 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1401 IN OUT PIMAGEHLP_LINE64 Line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1402 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1403
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1404 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1405 #define SymGetLineNext SymGetLineNext64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1406 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1407 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1408 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1409 SymGetLineNext(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1410 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1411 IN OUT PIMAGEHLP_LINE Line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1412 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1413 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1414
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1415 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1416 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1417 SymGetLinePrev64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1418 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1419 IN OUT PIMAGEHLP_LINE64 Line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1420 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1421
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1422 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1423 #define SymGetLinePrev SymGetLinePrev64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1424 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1425 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1426 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1427 SymGetLinePrev(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1428 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1429 IN OUT PIMAGEHLP_LINE Line
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1430 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1431 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1432
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1433 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1434 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1435 SymMatchFileName(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1436 IN PSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1437 IN PSTR Match,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1438 OUT PSTR *FileNameStop,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1439 OUT PSTR *MatchStop
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1440 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1441
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1442 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1443 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1444 SymInitialize(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1445 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1446 IN PSTR UserSearchPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1447 IN BOOL fInvadeProcess
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1448 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1449
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1450 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1451 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1452 SymGetSearchPath(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1453 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1454 OUT PSTR SearchPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1455 IN DWORD SearchPathLength
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1456 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1457
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1458 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1459 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1460 SymSetSearchPath(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1461 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1462 IN PSTR SearchPath
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1463 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1464
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1465 DWORD64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1466 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1467 SymLoadModule64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1468 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1469 IN HANDLE hFile,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1470 IN PSTR ImageName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1471 IN PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1472 IN DWORD64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1473 IN DWORD SizeOfDll
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1474 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1475
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1476 #define SLMFLAG_VIRTUAL 0x1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1477
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1478 DWORD64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1479 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1480 SymLoadModuleEx(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1481 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1482 IN HANDLE hFile,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1483 IN PSTR ImageName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1484 IN PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1485 IN DWORD64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1486 IN DWORD DllSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1487 IN PMODLOAD_DATA Data,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1488 IN DWORD Flags
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1489 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1490
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1491 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1492 #define SymLoadModule SymLoadModule64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1493 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1494 DWORD
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1495 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1496 SymLoadModule(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1497 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1498 IN HANDLE hFile,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1499 IN PSTR ImageName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1500 IN PSTR ModuleName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1501 IN DWORD BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1502 IN DWORD SizeOfDll
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1503 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1504 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1505
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1506 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1507 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1508 SymUnloadModule64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1509 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1510 IN DWORD64 BaseOfDll
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1511 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1512
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1513 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1514 #define SymUnloadModule SymUnloadModule64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1515 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1516 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1517 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1518 SymUnloadModule(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1519 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1520 IN DWORD BaseOfDll
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1521 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1522 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1523
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1524 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1525 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1526 SymUnDName64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1527 IN PIMAGEHLP_SYMBOL64 sym, // Symbol to undecorate
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1528 OUT PSTR UnDecName, // Buffer to store undecorated name in
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1529 IN DWORD UnDecNameLength // Size of the buffer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1530 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1531
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1532 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1533 #define SymUnDName SymUnDName64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1534 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1535 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1536 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1537 SymUnDName(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1538 IN PIMAGEHLP_SYMBOL sym, // Symbol to undecorate
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1539 OUT PSTR UnDecName, // Buffer to store undecorated name in
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1540 IN DWORD UnDecNameLength // Size of the buffer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1541 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1542 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1543
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1544 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1545 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1546 SymRegisterCallback64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1547 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1548 IN PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1549 IN ULONG64 UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1550 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1551
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1552 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1553 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1554 SymRegisterFunctionEntryCallback64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1555 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1556 IN PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1557 IN ULONG64 UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1558 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1559
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1560 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1561 #define SymRegisterCallback SymRegisterCallback64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1562 #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1563 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1564 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1565 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1566 SymRegisterCallback(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1567 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1568 IN PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1569 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1570 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1571
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1572 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1573 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1574 SymRegisterFunctionEntryCallback(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1575 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1576 IN PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1577 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1578 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1579 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1580
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1581
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1582 typedef struct _IMAGEHLP_SYMBOL_SRC {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1583 DWORD sizeofstruct;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1584 DWORD type;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1585 char file[MAX_PATH];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1586 } IMAGEHLP_SYMBOL_SRC, *PIMAGEHLP_SYMBOL_SRC;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1587
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1588 typedef struct _MODULE_TYPE_INFO { // AKA TYPTYP
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1589 USHORT dataLength;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1590 USHORT leaf;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1591 BYTE data[1];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1592 } MODULE_TYPE_INFO, *PMODULE_TYPE_INFO;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1593
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1594 typedef struct _SYMBOL_INFO {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1595 ULONG SizeOfStruct;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1596 ULONG TypeIndex; // Type Index of symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1597 ULONG64 Reserved[2];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1598 ULONG info;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1599 ULONG Size;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1600 ULONG64 ModBase; // Base Address of module comtaining this symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1601 ULONG Flags;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1602 ULONG64 Value; // Value of symbol, ValuePresent should be 1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1603 ULONG64 Address; // Address of symbol including base address of module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1604 ULONG Register; // register holding value or pointer to value
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1605 ULONG Scope; // scope of the symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1606 ULONG Tag; // pdb classification
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1607 ULONG NameLen; // Actual length of name
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1608 ULONG MaxNameLen;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1609 CHAR Name[1]; // Name of symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1610 } SYMBOL_INFO, *PSYMBOL_INFO;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1611
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1612 typedef struct _SYMBOL_INFO_PACKAGE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1613 SYMBOL_INFO si;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1614 CHAR name[MAX_SYM_NAME + 1];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1615 } SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1616
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1617 typedef struct _IMAGEHLP_STACK_FRAME
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1618 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1619 ULONG64 InstructionOffset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1620 ULONG64 ReturnOffset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1621 ULONG64 FrameOffset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1622 ULONG64 StackOffset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1623 ULONG64 BackingStoreOffset;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1624 ULONG64 FuncTableEntry;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1625 ULONG64 Params[4];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1626 ULONG64 Reserved[5];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1627 BOOL Virtual;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1628 ULONG Reserved2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1629 } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1630
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1631 typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1632
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1633
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1634 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1635 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1636 SymSetContext(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1637 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1638 PIMAGEHLP_STACK_FRAME StackFrame,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1639 PIMAGEHLP_CONTEXT Context
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1640 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1641
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1642 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1643 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1644 SymFromAddr(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1645 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1646 IN DWORD64 Address,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1647 OUT PDWORD64 Displacement,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1648 IN OUT PSYMBOL_INFO Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1649 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1650
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1651 // While SymFromName will provide a symbol from a name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1652 // SymEnumSymbols can provide the same matching information
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1653 // for ALL symbols with a matching name, even regular
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1654 // expressions. That way you can search across modules
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1655 // and differentiate between identically named symbols.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1656
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1657 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1658 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1659 SymFromName(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1660 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1661 IN LPSTR Name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1662 OUT PSYMBOL_INFO Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1663 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1664
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1665 typedef BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1666 (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1667 PSYMBOL_INFO pSymInfo,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1668 ULONG SymbolSize,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1669 PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1670 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1671
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1672 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1673 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1674 SymEnumSymbols(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1675 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1676 IN ULONG64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1677 IN PCSTR Mask,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1678 IN PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1679 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1680 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1681
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1682 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1683 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1684 SymEnumSymbolsForAddr(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1685 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1686 IN DWORD64 Address,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1687 IN PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1688 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1689 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1690
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1691 typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1692 TI_GET_SYMTAG,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1693 TI_GET_SYMNAME,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1694 TI_GET_LENGTH,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1695 TI_GET_TYPE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1696 TI_GET_TYPEID,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1697 TI_GET_BASETYPE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1698 TI_GET_ARRAYINDEXTYPEID,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1699 TI_FINDCHILDREN,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1700 TI_GET_DATAKIND,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1701 TI_GET_ADDRESSOFFSET,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1702 TI_GET_OFFSET,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1703 TI_GET_VALUE,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1704 TI_GET_COUNT,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1705 TI_GET_CHILDRENCOUNT,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1706 TI_GET_BITPOSITION,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1707 TI_GET_VIRTUALBASECLASS,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1708 TI_GET_VIRTUALTABLESHAPEID,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1709 TI_GET_VIRTUALBASEPOINTEROFFSET,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1710 TI_GET_CLASSPARENTID,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1711 TI_GET_NESTED,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1712 TI_GET_SYMINDEX,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1713 TI_GET_LEXICALPARENT,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1714 TI_GET_ADDRESS,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1715 TI_GET_THISADJUST,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1716 TI_GET_UDTKIND,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1717 TI_IS_EQUIV_TO,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1718 TI_GET_CALLING_CONVENTION,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1719 } IMAGEHLP_SYMBOL_TYPE_INFO;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1720
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1721 typedef struct _TI_FINDCHILDREN_PARAMS {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1722 ULONG Count;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1723 ULONG Start;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1724 ULONG ChildId[1];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1725 } TI_FINDCHILDREN_PARAMS;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1726
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1727 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1728 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1729 SymGetTypeInfo(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1730 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1731 IN DWORD64 ModBase,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1732 IN ULONG TypeId,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1733 IN IMAGEHLP_SYMBOL_TYPE_INFO GetType,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1734 OUT PVOID pInfo
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1735 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1736
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1737 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1738 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1739 SymEnumTypes(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1740 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1741 IN ULONG64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1742 IN PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1743 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1744 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1745
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1746 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1747 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1748 SymGetTypeFromName(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1749 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1750 IN ULONG64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1751 IN LPSTR Name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1752 OUT PSYMBOL_INFO Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1753 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1754
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1755 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1756 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1757 SymAddSymbol(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1758 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1759 IN ULONG64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1760 IN PCSTR Name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1761 IN DWORD64 Address,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1762 IN DWORD Size,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1763 IN DWORD Flags
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1764 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1765
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1766 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1767 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1768 SymDeleteSymbol(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1769 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1770 IN ULONG64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1771 IN PCSTR Name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1772 IN DWORD64 Address,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1773 IN DWORD Flags
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1774 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1775
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1776 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1777 // Full user-mode dump creation.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1778 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1779
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1780 typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1781 DWORD DataType,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1782 PVOID* Data,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1783 LPDWORD DataLength,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1784 PVOID UserData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1785 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1786
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1787 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1788 WINAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1789 DbgHelpCreateUserDump(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1790 IN LPSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1791 IN PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1792 IN PVOID UserData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1793 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1794
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1795 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1796 WINAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1797 DbgHelpCreateUserDumpW(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1798 IN LPWSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1799 IN PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1800 IN PVOID UserData
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1801 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1802
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1803 // -----------------------------------------------------------------
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1804 // The following 4 legacy APIs are fully supported, but newer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1805 // ones are recommended. SymFromName and SymFromAddr provide
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1806 // much more detailed info on the returned symbol.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1807
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1808 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1809 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1810 SymGetSymFromAddr64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1811 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1812 IN DWORD64 qwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1813 OUT PDWORD64 pdwDisplacement,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1814 OUT PIMAGEHLP_SYMBOL64 Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1815 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1816
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1817 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1818 #define SymGetSymFromAddr SymGetSymFromAddr64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1819 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1820 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1821 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1822 SymGetSymFromAddr(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1823 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1824 IN DWORD dwAddr,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1825 OUT PDWORD pdwDisplacement,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1826 OUT PIMAGEHLP_SYMBOL Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1827 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1828 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1829
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1830 // While following two APIs will provide a symbol from a name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1831 // SymEnumSymbols can provide the same matching information
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1832 // for ALL symbols with a matching name, even regular
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1833 // expressions. That way you can search across modules
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1834 // and differentiate between identically named symbols.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1835
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1836 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1837 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1838 SymGetSymFromName64(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1839 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1840 IN PSTR Name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1841 OUT PIMAGEHLP_SYMBOL64 Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1842 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1843
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1844 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1845 #define SymGetSymFromName SymGetSymFromName64
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1846 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1847 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1848 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1849 SymGetSymFromName(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1850 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1851 IN PSTR Name,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1852 OUT PIMAGEHLP_SYMBOL Symbol
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1853 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1854 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1855
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1856
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1857 // -----------------------------------------------------------------
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1858 // The following APIs exist only for backwards compatibility
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1859 // with a pre-release version documented in an MSDN release.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1860
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1861 // You should use SymFindFileInPath if you want to maintain
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1862 // future compatibility.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1863
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1864 DBHLP_DEPRECIATED
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1865 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1866 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1867 FindFileInPath(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1868 HANDLE hprocess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1869 LPSTR SearchPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1870 LPSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1871 PVOID id,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1872 DWORD two,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1873 DWORD three,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1874 DWORD flags,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1875 LPSTR FilePath
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1876 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1877
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1878 // You should use SymFindFileInPath if you want to maintain
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1879 // future compatibility.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1880
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1881 DBHLP_DEPRECIATED
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1882 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1883 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1884 FindFileInSearchPath(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1885 HANDLE hprocess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1886 LPSTR SearchPath,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1887 LPSTR FileName,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1888 DWORD one,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1889 DWORD two,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1890 DWORD three,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1891 LPSTR FilePath
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1892 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1893
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1894 DBHLP_DEPRECIATED
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1895 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1896 IMAGEAPI
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1897 SymEnumSym(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1898 IN HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1899 IN ULONG64 BaseOfDll,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1900 IN PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1901 IN PVOID UserContext
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1902 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1903
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1904 // These values should not be used.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1905 // They have been replaced by SYMFLAG_ values.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1906
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1907 #define SYMF_OMAP_GENERATED 0x00000001
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1908 #define SYMF_OMAP_MODIFIED 0x00000002
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1909 #define SYMF_REGISTER 0x00000008
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1910 #define SYMF_REGREL 0x00000010
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1911 #define SYMF_FRAMEREL 0x00000020
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1912 #define SYMF_PARAMETER 0x00000040
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1913 #define SYMF_LOCAL 0x00000080
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1914 #define SYMF_CONSTANT 0x00000100
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1915 #define SYMF_EXPORT 0x00000200
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1916 #define SYMF_FORWARDER 0x00000400
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1917 #define SYMF_FUNCTION 0x00000800
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1918 #define SYMF_VIRTUAL 0x00001000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1919 #define SYMF_THUNK 0x00002000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1920 #define SYMF_TLSREL 0x00004000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1921
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1922 // These values should also not be used.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1923 // They have been replaced by SYMFLAG_ values.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1924
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1925 #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1926 #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER // 0x0008
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1927 #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL // 0x0010
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1928 #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL // 0x0020
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1929 #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER // 0x0040
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1930 #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL // 0x0080
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1931 #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT // 0x0100
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1932 #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION // 0x0800
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1933 #define IMAGEHLP_SYMBOL_VIRTUAL SYMF_VIRTUAL // 0x1000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1934 #define IMAGEHLP_SYMBOL_THUNK SYMF_THUNK // 0x2000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1935 #define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE SYMF_TLSREL // 0x4000
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1936
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1937
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1938 #include <pshpack4.h>
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1939
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1940 #pragma warning(disable:4200) // Zero length array
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1941
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1942
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1943 #define MINIDUMP_SIGNATURE ('PMDM')
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1944 #define MINIDUMP_VERSION (42899)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1945 +/
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1946
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1947 alias DWORD RVA;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1948 alias ULONG64 RVA64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1949
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1950 struct MINIDUMP_LOCATION_DESCRIPTOR {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1951 ULONG32 DataSize;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1952 RVA Rva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1953 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1954
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1955 struct MINIDUMP_LOCATION_DESCRIPTOR64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1956 ULONG64 DataSize;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1957 RVA64 Rva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1958 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1959
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1960 struct MINIDUMP_MEMORY_DESCRIPTOR {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1961 ULONG64 StartOfMemoryRange;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1962 MINIDUMP_LOCATION_DESCRIPTOR Memory;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1963 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1964 alias MINIDUMP_MEMORY_DESCRIPTOR* PMINIDUMP_MEMORY_DESCRIPTOR;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1965
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1966 // DESCRIPTOR64 is used for full-memory minidumps where
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1967 // all of the raw memory is laid out sequentially at the
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1968 // end of the dump. There is no need for individual RVAs
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1969 // as the RVA is the base RVA plus the sum of the preceeding
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1970 // data blocks.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1971 struct MINIDUMP_MEMORY_DESCRIPTOR64 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1972 ULONG64 StartOfMemoryRange;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1973 ULONG64 DataSize;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1974 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1975 alias MINIDUMP_MEMORY_DESCRIPTOR64* PMINIDUMP_MEMORY_DESCRIPTOR64;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1976
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1977
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1978 struct MINIDUMP_HEADER {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1979 ULONG32 Signature;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1980 ULONG32 Version;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1981 ULONG32 NumberOfStreams;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1982 RVA StreamDirectoryRva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1983 ULONG32 CheckSum;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1984 union {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1985 ULONG32 Reserved;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1986 ULONG32 TimeDateStamp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1987 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1988 ULONG64 Flags;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1989 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1990 alias MINIDUMP_HEADER* PMINIDUMP_HEADER;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1991
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1992 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1993 // The MINIDUMP_HEADER field StreamDirectoryRva points to
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1994 // an array of MINIDUMP_DIRECTORY structures.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1995 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1996
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1997 struct MINIDUMP_DIRECTORY {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1998 ULONG32 StreamType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1999 MINIDUMP_LOCATION_DESCRIPTOR Location;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2000 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2001 alias MINIDUMP_DIRECTORY* PMINIDUMP_DIRECTORY;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2002
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2003
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2004 struct MINIDUMP_STRING {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2005 ULONG32 Length; // Length in bytes of the string
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2006 WCHAR Buffer [0]; // Variable size buffer
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2007 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2008 alias MINIDUMP_STRING* PMINIDUMP_STRING;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2009
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2010 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2011 // The MINIDUMP_DIRECTORY field StreamType may be one of the following types.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2012 // Types will be added in the future, so if a program reading the minidump
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2013 // header encounters a stream type it does not understand it should ignore
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2014 // the data altogether. Any tag above LastReservedStream will not be used by
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2015 // the system and is reserved for program-specific information.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2016 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2017
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2018 enum MINIDUMP_STREAM_TYPE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2019
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2020 UnusedStream = 0,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2021 ReservedStream0 = 1,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2022 ReservedStream1 = 2,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2023 ThreadListStream = 3,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2024 ModuleListStream = 4,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2025 MemoryListStream = 5,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2026 ExceptionStream = 6,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2027 SystemInfoStream = 7,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2028 ThreadExListStream = 8,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2029 Memory64ListStream = 9,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2030 CommentStreamA = 10,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2031 CommentStreamW = 11,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2032 HandleDataStream = 12,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2033 FunctionTableStream = 13,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2034 UnloadedModuleListStream = 14,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2035 MiscInfoStream = 15,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2036
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2037 LastReservedStream = 0xffff
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2038
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2039 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2040
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2041
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2042 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2043 // The minidump system information contains processor and
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2044 // Operating System specific information.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2045 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2046
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2047 /+
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2048 #if defined(_MSC_VER)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2049 #if _MSC_VER >= 800
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2050 #if _MSC_VER >= 1200
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2051 #pragma warning(push)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2052 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2053 #pragma warning(disable:4201) /* Nameless struct/union */
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2054 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2055 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2056 +/
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2057
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2058 struct MINIDUMP_SYSTEM_INFO {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2059
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2060 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2061 // ProcessorArchitecture, ProcessorLevel and ProcessorRevision are all
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2062 // taken from the SYSTEM_INFO structure obtained by GetSystemInfo( ).
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2063 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2064
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2065 USHORT ProcessorArchitecture;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2066 USHORT ProcessorLevel;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2067 USHORT ProcessorRevision;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2068
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2069 union {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2070 USHORT Reserved0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2071 struct {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2072 UCHAR NumberOfProcessors;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2073 UCHAR ProductType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2074 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2075 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2076
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2077 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2078 // MajorVersion, MinorVersion, BuildNumber, PlatformId and
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2079 // CSDVersion are all taken from the OSVERSIONINFO structure
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2080 // returned by GetVersionEx( ).
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2081 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2082
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2083 ULONG32 MajorVersion;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2084 ULONG32 MinorVersion;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2085 ULONG32 BuildNumber;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2086 ULONG32 PlatformId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2087
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2088 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2089 // RVA to a CSDVersion string in the string table.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2090 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2091
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2092 RVA CSDVersionRva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2093
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2094 union {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2095 ULONG32 Reserved1;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2096 struct {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2097 USHORT SuiteMask;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2098 USHORT Reserved2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2099 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2100 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2101
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2102 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2103 // CPU information is obtained from one of two places.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2104 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2105 // 1) On x86 computers, CPU_INFORMATION is obtained from the CPUID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2106 // instruction. You must use the X86 portion of the union for X86
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2107 // computers.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2108 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2109 // 2) On non-x86 architectures, CPU_INFORMATION is obtained by calling
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2110 // IsProcessorFeatureSupported().
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2111 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2112
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2113 union CPU_INFORMATION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2114
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2115 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2116 // X86 platforms use CPUID function to obtain processor information.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2117 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2118
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2119 struct _X86CpuInfo_t {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2120
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2121 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2122 // CPUID Subfunction 0, register EAX (VendorId [0]),
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2123 // EBX (VendorId [1]) and ECX (VendorId [2]).
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2124 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2125
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2126 ULONG32 VendorId [ 3 ];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2127
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2128 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2129 // CPUID Subfunction 1, register EAX
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2130 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2131
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2132 ULONG32 VersionInformation;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2133
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2134 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2135 // CPUID Subfunction 1, register EDX
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2136 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2137
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2138 ULONG32 FeatureInformation;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2139
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2140
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2141 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2142 // CPUID, Subfunction 80000001, register EBX. This will only
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2143 // be obtained if the vendor id is "AuthenticAMD".
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2144 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2145
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2146 ULONG32 AMDExtendedCpuFeatures;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2147
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2148 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2149 _X86CpuInfo_t X86CpuInfo;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2150
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2151 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2152 // Non-x86 platforms use processor feature flags.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2153 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2154
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2155 struct _OtherCpuInfo_t {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2156
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2157 ULONG64 ProcessorFeatures [ 2 ];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2158
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2159 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2160 _OtherCpuInfo_t OtherCpuInfo;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2161
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2162 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2163 CPU_INFORMATION Cpu;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2164
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2165 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2166 alias MINIDUMP_SYSTEM_INFO* PMINIDUMP_SYSTEM_INFO;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2167 alias MINIDUMP_SYSTEM_INFO.CPU_INFORMATION* PCPU_INFORMATION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2168
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2169 /+
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2170 #if defined(_MSC_VER)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2171 #if _MSC_VER >= 800
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2172 #if _MSC_VER >= 1200
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2173 #pragma warning(pop)
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2174 #else
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2175 #pragma warning(disable:4201) /* Nameless struct/union */
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2176 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2177 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2178 #endif
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2179 +/
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2180
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2181 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2182 // The minidump thread contains standard thread
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2183 // information plus an RVA to the memory for this
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2184 // thread and an RVA to the CONTEXT structure for
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2185 // this thread.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2186 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2187
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2188
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2189 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2190 // ThreadId must be 4 bytes on all architectures.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2191 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2192
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2193 //C_ASSERT (sizeof ( ((PPROCESS_INFORMATION)0)->dwThreadId ) == 4);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2194
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2195 struct MINIDUMP_THREAD {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2196 ULONG32 ThreadId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2197 ULONG32 SuspendCount;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2198 ULONG32 PriorityClass;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2199 ULONG32 Priority;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2200 ULONG64 Teb;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2201 MINIDUMP_MEMORY_DESCRIPTOR Stack;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2202 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2203 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2204 alias MINIDUMP_THREAD* PMINIDUMP_THREAD;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2205
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2206 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2207 // The thread list is a container of threads.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2208 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2209
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2210 struct MINIDUMP_THREAD_LIST {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2211 ULONG32 NumberOfThreads;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2212 MINIDUMP_THREAD Threads [0];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2213 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2214 alias MINIDUMP_THREAD_LIST* PMINIDUMP_THREAD_LIST;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2215
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2216
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2217 struct MINIDUMP_THREAD_EX {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2218 ULONG32 ThreadId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2219 ULONG32 SuspendCount;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2220 ULONG32 PriorityClass;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2221 ULONG32 Priority;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2222 ULONG64 Teb;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2223 MINIDUMP_MEMORY_DESCRIPTOR Stack;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2224 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2225 MINIDUMP_MEMORY_DESCRIPTOR BackingStore;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2226 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2227 alias MINIDUMP_THREAD_EX* PMINIDUMP_THREAD_EX;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2228
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2229 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2230 // The thread list is a container of threads.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2231 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2232
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2233 struct MINIDUMP_THREAD_EX_LIST {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2234 ULONG32 NumberOfThreads;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2235 MINIDUMP_THREAD_EX Threads [0];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2236 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2237 alias MINIDUMP_THREAD_EX_LIST* PMINIDUMP_THREAD_EX_LIST;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2238
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2239
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2240 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2241 // The MINIDUMP_EXCEPTION is the same as EXCEPTION on Win64.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2242 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2243
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2244 struct MINIDUMP_EXCEPTION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2245 ULONG32 ExceptionCode;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2246 ULONG32 ExceptionFlags;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2247 ULONG64 ExceptionRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2248 ULONG64 ExceptionAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2249 ULONG32 NumberParameters;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2250 ULONG32 __unusedAlignment;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2251 ULONG64 ExceptionInformation [ EXCEPTION_MAXIMUM_PARAMETERS ];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2252 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2253 alias MINIDUMP_EXCEPTION* PMINIDUMP_EXCEPTION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2254
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2255
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2256 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2257 // The exception information stream contains the id of the thread that caused
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2258 // the exception (ThreadId), the exception record for the exception
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2259 // (ExceptionRecord) and an RVA to the thread context where the exception
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2260 // occured.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2261 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2262
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2263 struct MINIDUMP_EXCEPTION_STREAM {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2264 ULONG32 ThreadId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2265 ULONG32 __alignment;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2266 MINIDUMP_EXCEPTION ExceptionRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2267 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2268 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2269 alias MINIDUMP_EXCEPTION_STREAM* PMINIDUMP_EXCEPTION_STREAM;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2270
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2271
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2272 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2273 // The MINIDUMP_MODULE contains information about a
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2274 // a specific module. It includes the CheckSum and
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2275 // the TimeDateStamp for the module so the module
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2276 // can be reloaded during the analysis phase.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2277 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2278
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2279 struct MINIDUMP_MODULE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2280 ULONG64 BaseOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2281 ULONG32 SizeOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2282 ULONG32 CheckSum;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2283 ULONG32 TimeDateStamp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2284 RVA ModuleNameRva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2285 VS_FIXEDFILEINFO VersionInfo;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2286 MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2287 MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2288 ULONG64 Reserved0; // Reserved for future use.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2289 ULONG64 Reserved1; // Reserved for future use.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2290 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2291 alias MINIDUMP_MODULE* PMINIDUMP_MODULE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2292
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2293
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2294 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2295 // The minidump module list is a container for modules.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2296 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2297
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2298 struct MINIDUMP_MODULE_LIST {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2299 ULONG32 NumberOfModules;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2300 MINIDUMP_MODULE Modules [ 0 ];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2301 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2302 alias MINIDUMP_MODULE_LIST* PMINIDUMP_MODULE_LIST;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2303
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2304
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2305 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2306 // Memory Ranges
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2307 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2308
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2309 struct MINIDUMP_MEMORY_LIST {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2310 ULONG32 NumberOfMemoryRanges;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2311 MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges [0];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2312 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2313 alias MINIDUMP_MEMORY_LIST* PMINIDUMP_MEMORY_LIST;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2314
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2315 struct MINIDUMP_MEMORY64_LIST {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2316 ULONG64 NumberOfMemoryRanges;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2317 RVA64 BaseRva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2318 MINIDUMP_MEMORY_DESCRIPTOR64 MemoryRanges [0];
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2319 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2320 alias MINIDUMP_MEMORY64_LIST* PMINIDUMP_MEMORY64_LIST;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2321
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2322
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2323 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2324 // Support for user supplied exception information.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2325 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2326
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2327 struct MINIDUMP_EXCEPTION_INFORMATION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2328 DWORD ThreadId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2329 PEXCEPTION_POINTERS ExceptionPointers;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2330 BOOL ClientPointers;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2331 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2332 alias MINIDUMP_EXCEPTION_INFORMATION* PMINIDUMP_EXCEPTION_INFORMATION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2333
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2334 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2335 // Support for capturing system handle state at the time of the dump.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2336 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2337
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2338 struct MINIDUMP_HANDLE_DESCRIPTOR {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2339 ULONG64 Handle;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2340 RVA TypeNameRva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2341 RVA ObjectNameRva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2342 ULONG32 Attributes;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2343 ULONG32 GrantedAccess;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2344 ULONG32 HandleCount;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2345 ULONG32 PointerCount;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2346 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2347 alias MINIDUMP_HANDLE_DESCRIPTOR* PMINIDUMP_HANDLE_DESCRIPTOR;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2348
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2349 struct MINIDUMP_HANDLE_DATA_STREAM {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2350 ULONG32 SizeOfHeader;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2351 ULONG32 SizeOfDescriptor;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2352 ULONG32 NumberOfDescriptors;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2353 ULONG32 Reserved;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2354 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2355 alias MINIDUMP_HANDLE_DATA_STREAM* PMINIDUMP_HANDLE_DATA_STREAM;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2356
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2357
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2358 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2359 // Support for capturing dynamic function table state at the time of the dump.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2360 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2361
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2362 struct MINIDUMP_FUNCTION_TABLE_DESCRIPTOR {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2363 ULONG64 MinimumAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2364 ULONG64 MaximumAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2365 ULONG64 BaseAddress;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2366 ULONG32 EntryCount;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2367 ULONG32 SizeOfAlignPad;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2368 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2369 alias MINIDUMP_FUNCTION_TABLE_DESCRIPTOR* PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2370
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2371 struct MINIDUMP_FUNCTION_TABLE_STREAM {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2372 ULONG32 SizeOfHeader;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2373 ULONG32 SizeOfDescriptor;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2374 ULONG32 SizeOfNativeDescriptor;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2375 ULONG32 SizeOfFunctionEntry;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2376 ULONG32 NumberOfDescriptors;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2377 ULONG32 SizeOfAlignPad;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2378 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2379 alias MINIDUMP_FUNCTION_TABLE_STREAM* PMINIDUMP_FUNCTION_TABLE_STREAM;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2380
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2381
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2382 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2383 // The MINIDUMP_UNLOADED_MODULE contains information about a
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2384 // a specific module that was previously loaded but no
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2385 // longer is. This can help with diagnosing problems where
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2386 // callers attempt to call code that is no longer loaded.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2387 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2388
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2389 struct MINIDUMP_UNLOADED_MODULE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2390 ULONG64 BaseOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2391 ULONG32 SizeOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2392 ULONG32 CheckSum;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2393 ULONG32 TimeDateStamp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2394 RVA ModuleNameRva;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2395 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2396 alias MINIDUMP_UNLOADED_MODULE* PMINIDUMP_UNLOADED_MODULE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2397
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2398
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2399 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2400 // The minidump unloaded module list is a container for unloaded modules.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2401 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2402
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2403 struct MINIDUMP_UNLOADED_MODULE_LIST {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2404 ULONG32 SizeOfHeader;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2405 ULONG32 SizeOfEntry;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2406 ULONG32 NumberOfEntries;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2407 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2408 alias MINIDUMP_UNLOADED_MODULE_LIST* PMINIDUMP_UNLOADED_MODULE_LIST;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2409
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2410
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2411 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2412 // The miscellaneous information stream contains a variety
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2413 // of small pieces of information. A member is valid if
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2414 // it's within the available size and its corresponding
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2415 // bit is set.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2416 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2417
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2418 enum : uint {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2419 MINIDUMP_MISC1_PROCESS_ID = 0x00000001,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2420 MINIDUMP_MISC1_PROCESS_TIMES
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2421 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2422
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2423 struct MINIDUMP_MISC_INFO {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2424 ULONG32 SizeOfInfo;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2425 ULONG32 Flags1;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2426 ULONG32 ProcessId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2427 ULONG32 ProcessCreateTime;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2428 ULONG32 ProcessUserTime;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2429 ULONG32 ProcessKernelTime;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2430 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2431 alias MINIDUMP_MISC_INFO* PMINIDUMP_MISC_INFO;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2432
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2433
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2434 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2435 // Support for arbitrary user-defined information.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2436 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2437
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2438 struct MINIDUMP_USER_RECORD {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2439 ULONG32 Type;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2440 MINIDUMP_LOCATION_DESCRIPTOR Memory;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2441 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2442 alias MINIDUMP_USER_RECORD* PMINIDUMP_USER_RECORD;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2443
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2444
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2445 struct MINIDUMP_USER_STREAM {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2446 ULONG32 Type;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2447 ULONG BufferSize;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2448 PVOID Buffer;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2449 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2450 alias MINIDUMP_USER_STREAM* PMINIDUMP_USER_STREAM;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2451
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2452 struct MINIDUMP_USER_STREAM_INFORMATION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2453 ULONG UserStreamCount;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2454 PMINIDUMP_USER_STREAM UserStreamArray;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2455 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2456 alias MINIDUMP_USER_STREAM_INFORMATION* PMINIDUMP_USER_STREAM_INFORMATION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2457
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2458 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2459 // Callback support.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2460 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2461
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2462 enum MINIDUMP_CALLBACK_TYPE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2463 ModuleCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2464 ThreadCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2465 ThreadExCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2466 IncludeThreadCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2467 IncludeModuleCallback,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2468 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2469
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2470
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2471 struct MINIDUMP_THREAD_CALLBACK {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2472 ULONG ThreadId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2473 HANDLE ThreadHandle;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2474 CONTEXT Context;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2475 ULONG SizeOfContext;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2476 ULONG64 StackBase;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2477 ULONG64 StackEnd;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2478 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2479 alias MINIDUMP_THREAD_CALLBACK* PMINIDUMP_THREAD_CALLBACK;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2480
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2481 struct MINIDUMP_THREAD_EX_CALLBACK {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2482 ULONG ThreadId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2483 HANDLE ThreadHandle;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2484 CONTEXT Context;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2485 ULONG SizeOfContext;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2486 ULONG64 StackBase;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2487 ULONG64 StackEnd;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2488 ULONG64 BackingStoreBase;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2489 ULONG64 BackingStoreEnd;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2490 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2491 alias MINIDUMP_THREAD_EX_CALLBACK* PMINIDUMP_THREAD_EX_CALLBACK;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2492
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2493
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2494 struct MINIDUMP_INCLUDE_THREAD_CALLBACK {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2495 ULONG ThreadId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2496 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2497 alias MINIDUMP_INCLUDE_THREAD_CALLBACK* PMINIDUMP_INCLUDE_THREAD_CALLBACK;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2498
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2499
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2500 enum THREAD_WRITE_FLAGS {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2501 ThreadWriteThread = 0x0001,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2502 ThreadWriteStack = 0x0002,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2503 ThreadWriteContext = 0x0004,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2504 ThreadWriteBackingStore = 0x0008,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2505 ThreadWriteInstructionWindow = 0x0010,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2506 ThreadWriteThreadData = 0x0020,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2507 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2508
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2509 struct MINIDUMP_MODULE_CALLBACK {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2510 PWCHAR FullPath;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2511 ULONG64 BaseOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2512 ULONG SizeOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2513 ULONG CheckSum;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2514 ULONG TimeDateStamp;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2515 VS_FIXEDFILEINFO VersionInfo;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2516 PVOID CvRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2517 ULONG SizeOfCvRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2518 PVOID MiscRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2519 ULONG SizeOfMiscRecord;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2520 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2521 alias MINIDUMP_MODULE_CALLBACK* PMINIDUMP_MODULE_CALLBACK;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2522
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2523
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2524 struct MINIDUMP_INCLUDE_MODULE_CALLBACK {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2525 ULONG64 BaseOfImage;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2526 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2527 alias MINIDUMP_INCLUDE_MODULE_CALLBACK* PMINIDUMP_INCLUDE_MODULE_CALLBACK;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2528
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2529
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2530 enum MODULE_WRITE_FLAGS {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2531 ModuleWriteModule = 0x0001,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2532 ModuleWriteDataSeg = 0x0002,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2533 ModuleWriteMiscRecord = 0x0004,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2534 ModuleWriteCvRecord = 0x0008,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2535 ModuleReferencedByMemory = 0x0010
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2536 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2537
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2538 struct MINIDUMP_CALLBACK_INPUT {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2539 ULONG ProcessId;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2540 HANDLE ProcessHandle;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2541 ULONG CallbackType;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2542 union {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2543 MINIDUMP_THREAD_CALLBACK Thread;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2544 MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2545 MINIDUMP_MODULE_CALLBACK Module;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2546 MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2547 MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2548 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2549 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2550 alias MINIDUMP_CALLBACK_INPUT* PMINIDUMP_CALLBACK_INPUT;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2551
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2552 struct MINIDUMP_CALLBACK_OUTPUT {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2553 union {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2554 ULONG ModuleWriteFlags;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2555 ULONG ThreadWriteFlags;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2556 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2557 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2558 alias MINIDUMP_CALLBACK_OUTPUT* PMINIDUMP_CALLBACK_OUTPUT;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2559
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2560
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2561 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2562 // A normal minidump contains just the information
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2563 // necessary to capture stack traces for all of the
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2564 // existing threads in a process.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2565 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2566 // A minidump with data segments includes all of the data
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2567 // sections from loaded modules in order to capture
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2568 // global variable contents. This can make the dump much
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2569 // larger if many modules have global data.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2570 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2571 // A minidump with full memory includes all of the accessible
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2572 // memory in the process and can be very large. A minidump
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2573 // with full memory always has the raw memory data at the end
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2574 // of the dump so that the initial structures in the dump can
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2575 // be mapped directly without having to include the raw
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2576 // memory information.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2577 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2578 // Stack and backing store memory can be filtered to remove
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2579 // data unnecessary for stack walking. This can improve
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2580 // compression of stacks and also deletes data that may
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2581 // be private and should not be stored in a dump.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2582 // Memory can also be scanned to see what modules are
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2583 // referenced by stack and backing store memory to allow
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2584 // omission of other modules to reduce dump size.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2585 // In either of these modes the ModuleReferencedByMemory flag
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2586 // is set for all modules referenced before the base
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2587 // module callbacks occur.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2588 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2589 // On some operating systems a list of modules that were
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2590 // recently unloaded is kept in addition to the currently
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2591 // loaded module list. This information can be saved in
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2592 // the dump if desired.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2593 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2594 // Stack and backing store memory can be scanned for referenced
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2595 // pages in order to pick up data referenced by locals or other
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2596 // stack memory. This can increase the size of a dump significantly.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2597 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2598 // Module paths may contain undesired information such as user names
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2599 // or other important directory names so they can be stripped. This
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2600 // option reduces the ability to locate the proper image later
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2601 // and should only be used in certain situations.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2602 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2603 // Complete operating system per-process and per-thread information can
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2604 // be gathered and stored in the dump.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2605 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2606 // The virtual address space can be scanned for various types
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2607 // of memory to be included in the dump.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2608 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2609
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2610
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2611 enum MINIDUMP_TYPE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2612 MiniDumpNormal = 0x0000,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2613 MiniDumpWithDataSegs = 0x0001,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2614 MiniDumpWithFullMemory = 0x0002,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2615 MiniDumpWithHandleData = 0x0004,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2616 MiniDumpFilterMemory = 0x0008,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2617 MiniDumpScanMemory = 0x0010,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2618 MiniDumpWithUnloadedModules = 0x0020,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2619 MiniDumpWithIndirectlyReferencedMemory = 0x0040,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2620 MiniDumpFilterModulePaths = 0x0080,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2621 MiniDumpWithProcessThreadData = 0x0100,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2622 MiniDumpWithPrivateReadWriteMemory = 0x0200,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2623 };
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2624
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2625
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2626 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2627 // The minidump callback should modify the FieldsToWrite parameter to reflect
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2628 // what portions of the specified thread or module should be written to the
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2629 // file.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2630 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2631
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2632
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2633 alias BOOL function (
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2634 PVOID CallbackParam,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2635 PMINIDUMP_CALLBACK_INPUT CallbackInput,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2636 PMINIDUMP_CALLBACK_OUTPUT CallbackOutput
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2637 )
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2638 MINIDUMP_CALLBACK_ROUTINE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2639
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2640 struct MINIDUMP_CALLBACK_INFORMATION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2641 MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2642 PVOID CallbackParam;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2643 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2644 alias MINIDUMP_CALLBACK_INFORMATION* PMINIDUMP_CALLBACK_INFORMATION;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2645
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2646 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2647 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2648 // PVOID
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2649 // RVA_TO_ADDR(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2650 // PVOID Mapping,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2651 // ULONG Rva
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2652 // )
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2653 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2654 // Routine Description:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2655 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2656 // Map an RVA that is contained within a mapped file to it's associated
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2657 // flat address.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2658 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2659 // Arguments:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2660 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2661 // Mapping - Base address of mapped file containing the RVA.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2662 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2663 // Rva - An Rva to fixup.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2664 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2665 // Return Values:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2666 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2667 // A pointer to the desired data.
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2668 //
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2669 //--
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2670
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2671 //#define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva)))
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2672
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2673 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2674 MiniDumpWriteDump(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2675 HANDLE hProcess,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2676 DWORD ProcessId,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2677 HANDLE hFile,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2678 MINIDUMP_TYPE DumpType,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2679 PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2680 PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2681 PMINIDUMP_CALLBACK_INFORMATION CallbackParam
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2682 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2683
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2684 BOOL
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2685 MiniDumpReadDumpStream(
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2686 PVOID BaseOfDump,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2687 ULONG StreamNumber,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2688 PMINIDUMP_DIRECTORY * Dir,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2689 PVOID * StreamPointer,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2690 ULONG * StreamSize
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2691 );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2692
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2693 //#include <poppack.h>
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2694
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2695 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2696
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2697
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2698 //#endif // _DBGHELP_