1 | /**
|
---|
2 | * This file has no copyright assigned and is placed in the Public Domain.
|
---|
3 | * This file is part of the mingw-w64 runtime package.
|
---|
4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
---|
5 | */
|
---|
6 | #pragma once
|
---|
7 |
|
---|
8 | #ifdef __cplusplus
|
---|
9 | extern "C" {
|
---|
10 | #endif
|
---|
11 |
|
---|
12 | typedef WINBOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE FileHandle,PCSTR FileName,PVOID CallerData);
|
---|
13 | typedef WINBOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE FileHandle,PCWSTR FileName,PVOID CallerData);
|
---|
14 | typedef WINBOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR filename,PVOID context);
|
---|
15 | typedef WINBOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR filename,PVOID context);
|
---|
16 | typedef WINBOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE FileHandle,PCSTR FileName,PVOID CallerData);
|
---|
17 | typedef WINBOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE FileHandle,PCWSTR FileName,PVOID CallerData);
|
---|
18 |
|
---|
19 | typedef WINBOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR,LPCSTR,PVOID,DWORD,DWORD,LPSTR);
|
---|
20 | typedef WINBOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID);
|
---|
21 | typedef WINBOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID);
|
---|
22 | typedef WINBOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR,ULONG64);
|
---|
23 | typedef WINBOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action,ULONG64 data,ULONG64 context);
|
---|
24 | typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)();
|
---|
25 | typedef WINBOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR);
|
---|
26 |
|
---|
27 | HANDLE IMAGEAPI FindDebugInfoFile(PCSTR FileName,PCSTR SymbolPath,PSTR DebugFilePath);
|
---|
28 | HANDLE IMAGEAPI FindDebugInfoFileEx(PCSTR FileName,PCSTR SymbolPath,PSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACK Callback,PVOID CallerData);
|
---|
29 | HANDLE IMAGEAPI FindDebugInfoFileExW(PCWSTR FileName,PCWSTR SymbolPath,PWSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACKW Callback,PVOID CallerData);
|
---|
30 | WINBOOL IMAGEAPI SymFindFileInPath(HANDLE hprocess,PCSTR SearchPath,PCSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACK callback,PVOID context);
|
---|
31 | WINBOOL IMAGEAPI SymFindFileInPathW(HANDLE hprocess,PCWSTR SearchPath,PCWSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACKW callback,PVOID context);
|
---|
32 | HANDLE IMAGEAPI FindExecutableImage(PCSTR FileName,PCSTR SymbolPath,PSTR ImageFilePath);
|
---|
33 | HANDLE IMAGEAPI FindExecutableImageEx(PCSTR FileName,PCSTR SymbolPath,PSTR ImageFilePath,PFIND_EXE_FILE_CALLBACK Callback,PVOID CallerData);
|
---|
34 | HANDLE IMAGEAPI FindExecutableImageExW(PCWSTR FileName,PCWSTR SymbolPath,PWSTR ImageFilePath,PFIND_EXE_FILE_CALLBACKW Callback,PVOID CallerData);
|
---|
35 | PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader(PVOID Base);
|
---|
36 | PVOID IMAGEAPI ImageDirectoryEntryToDataEx(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size,PIMAGE_SECTION_HEADER *FoundHeader);
|
---|
37 | PVOID IMAGEAPI ImageDirectoryEntryToData(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size);
|
---|
38 | PIMAGE_SECTION_HEADER IMAGEAPI ImageRvaToSection(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva);
|
---|
39 | PVOID IMAGEAPI ImageRvaToVa(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva,PIMAGE_SECTION_HEADER *LastRvaSection);
|
---|
40 |
|
---|
41 | #define SSRVOPT_CALLBACK 0x0001
|
---|
42 | #define SSRVOPT_DWORD 0x0002
|
---|
43 | #define SSRVOPT_DWORDPTR 0x0004
|
---|
44 | #define SSRVOPT_GUIDPTR 0x0008
|
---|
45 | #define SSRVOPT_OLDGUIDPTR 0x0010
|
---|
46 | #define SSRVOPT_UNATTENDED 0x0020
|
---|
47 | #define SSRVOPT_NOCOPY 0x0040
|
---|
48 | #define SSRVOPT_PARENTWIN 0x0080
|
---|
49 | #define SSRVOPT_PARAMTYPE 0x0100
|
---|
50 | #define SSRVOPT_SECURE 0x0200
|
---|
51 | #define SSRVOPT_TRACE 0x0400
|
---|
52 | #define SSRVOPT_SETCONTEXT 0x0800
|
---|
53 | #define SSRVOPT_PROXY 0x1000
|
---|
54 | #define SSRVOPT_DOWNSTREAM_STORE 0x2000
|
---|
55 | #define SSRVOPT_RESET ((ULONG_PTR)-1)
|
---|
56 |
|
---|
57 | #define SSRVACTION_TRACE 1
|
---|
58 | #define SSRVACTION_QUERYCANCEL 2
|
---|
59 | #define SSRVACTION_EVENT 3
|
---|
60 |
|
---|
61 | #ifndef _WIN64
|
---|
62 | typedef struct _IMAGE_DEBUG_INFORMATION {
|
---|
63 | LIST_ENTRY List;
|
---|
64 | DWORD ReservedSize;
|
---|
65 | PVOID ReservedMappedBase;
|
---|
66 | USHORT ReservedMachine;
|
---|
67 | USHORT ReservedCharacteristics;
|
---|
68 | DWORD ReservedCheckSum;
|
---|
69 | DWORD ImageBase;
|
---|
70 | DWORD SizeOfImage;
|
---|
71 | DWORD ReservedNumberOfSections;
|
---|
72 | PIMAGE_SECTION_HEADER ReservedSections;
|
---|
73 | DWORD ReservedExportedNamesSize;
|
---|
74 | PSTR ReservedExportedNames;
|
---|
75 | DWORD ReservedNumberOfFunctionTableEntries;
|
---|
76 | PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
|
---|
77 | DWORD ReservedLowestFunctionStartingAddress;
|
---|
78 | DWORD ReservedHighestFunctionEndingAddress;
|
---|
79 | DWORD ReservedNumberOfFpoTableEntries;
|
---|
80 | PFPO_DATA ReservedFpoTableEntries;
|
---|
81 | DWORD SizeOfCoffSymbols;
|
---|
82 | PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
|
---|
83 | DWORD ReservedSizeOfCodeViewSymbols;
|
---|
84 | PVOID ReservedCodeViewSymbols;
|
---|
85 | PSTR ImageFilePath;
|
---|
86 | PSTR ImageFileName;
|
---|
87 | PSTR ReservedDebugFilePath;
|
---|
88 | DWORD ReservedTimeDateStamp;
|
---|
89 | WINBOOL ReservedRomImage;
|
---|
90 | PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
|
---|
91 | DWORD ReservedNumberOfDebugDirectories;
|
---|
92 | DWORD ReservedOriginalFunctionTableBaseAddress;
|
---|
93 | DWORD Reserved[2];
|
---|
94 | } IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION;
|
---|
95 |
|
---|
96 | PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE FileHandle,PSTR FileName,PSTR SymbolPath,DWORD ImageBase);
|
---|
97 | WINBOOL IMAGEAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo);
|
---|
98 | #endif
|
---|
99 |
|
---|
100 | typedef WINBOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR FilePath,PVOID CallerData);
|
---|
101 |
|
---|
102 | WINBOOL IMAGEAPI SearchTreeForFile(PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer);
|
---|
103 | WINBOOL IMAGEAPI SearchTreeForFileW(PWSTR RootPath,PWSTR InputPathName,PWSTR OutputPathBuffer);
|
---|
104 | WINBOOL IMAGEAPI EnumDirTree(HANDLE hProcess,PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer,PENUMDIRTREE_CALLBACK Callback,PVOID CallbackData);
|
---|
105 | WINBOOL IMAGEAPI MakeSureDirectoryPathExists(PCSTR DirPath);
|
---|
106 |
|
---|
107 | #define UNDNAME_COMPLETE (0x0000)
|
---|
108 | #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)
|
---|
109 | #define UNDNAME_NO_MS_KEYWORDS (0x0002)
|
---|
110 | #define UNDNAME_NO_FUNCTION_RETURNS (0x0004)
|
---|
111 | #define UNDNAME_NO_ALLOCATION_MODEL (0x0008)
|
---|
112 | #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)
|
---|
113 | #define UNDNAME_NO_MS_THISTYPE (0x0020)
|
---|
114 | #define UNDNAME_NO_CV_THISTYPE (0x0040)
|
---|
115 | #define UNDNAME_NO_THISTYPE (0x0060)
|
---|
116 | #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)
|
---|
117 | #define UNDNAME_NO_THROW_SIGNATURES (0x0100)
|
---|
118 | #define UNDNAME_NO_MEMBER_TYPE (0x0200)
|
---|
119 | #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)
|
---|
120 | #define UNDNAME_32_BIT_DECODE (0x0800)
|
---|
121 | #define UNDNAME_NAME_ONLY (0x1000)
|
---|
122 | #define UNDNAME_NO_ARGUMENTS (0x2000)
|
---|
123 | #define UNDNAME_NO_SPECIAL_SYMS (0x4000)
|
---|
124 |
|
---|
125 | #define UNDNAME_NO_ARGUMENTS (0x2000)
|
---|
126 | #define UNDNAME_NO_SPECIAL_SYMS (0x4000)
|
---|
127 |
|
---|
128 | DWORD IMAGEAPI WINAPI UnDecorateSymbolName(PCSTR DecoratedName,PSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags);
|
---|
129 | DWORD IMAGEAPI WINAPI UnDecorateSymbolNameW(PCWSTR DecoratedName,PWSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags);
|
---|
130 |
|
---|
131 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
132 | #define UnDecorateSymbolName UnDecorateSymbolNameW
|
---|
133 | #endif
|
---|
134 |
|
---|
135 | #define DBHHEADER_DEBUGDIRS 0x1
|
---|
136 | #define DBHHEADER_CVMISC 0x2
|
---|
137 |
|
---|
138 | typedef struct _MODLOAD_CVMISC {
|
---|
139 | DWORD oCV;
|
---|
140 | size_t cCV;
|
---|
141 | DWORD oMisc;
|
---|
142 | size_t cMisc;
|
---|
143 | DWORD dtImage;
|
---|
144 | DWORD cImage;
|
---|
145 | } MODLOAD_CVMISC, *PMODLOAD_CVMISC;
|
---|
146 |
|
---|
147 | typedef enum {
|
---|
148 | AddrMode1616,
|
---|
149 | AddrMode1632,
|
---|
150 | AddrModeReal,
|
---|
151 | AddrModeFlat
|
---|
152 | } ADDRESS_MODE;
|
---|
153 |
|
---|
154 | typedef struct _tagADDRESS64 {
|
---|
155 | DWORD64 Offset;
|
---|
156 | WORD Segment;
|
---|
157 | ADDRESS_MODE Mode;
|
---|
158 | } ADDRESS64,*LPADDRESS64;
|
---|
159 |
|
---|
160 | #ifdef _IMAGEHLP64
|
---|
161 | #define ADDRESS ADDRESS64
|
---|
162 | #define LPADDRESS LPADDRESS64
|
---|
163 | #else
|
---|
164 | typedef struct _tagADDRESS {
|
---|
165 | DWORD Offset;
|
---|
166 | WORD Segment;
|
---|
167 | ADDRESS_MODE Mode;
|
---|
168 | } ADDRESS,*LPADDRESS;
|
---|
169 |
|
---|
170 | static __inline void Address32To64(LPADDRESS a32,LPADDRESS64 a64) {
|
---|
171 | a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset;
|
---|
172 | a64->Segment = a32->Segment;
|
---|
173 | a64->Mode = a32->Mode;
|
---|
174 | }
|
---|
175 |
|
---|
176 | static __inline void Address64To32(LPADDRESS64 a64,LPADDRESS a32) {
|
---|
177 | a32->Offset = (ULONG)a64->Offset;
|
---|
178 | a32->Segment = a64->Segment;
|
---|
179 | a32->Mode = a64->Mode;
|
---|
180 | }
|
---|
181 | #endif
|
---|
182 |
|
---|
183 | typedef struct _KDHELP64 {
|
---|
184 | DWORD64 Thread;
|
---|
185 | DWORD ThCallbackStack;
|
---|
186 | DWORD ThCallbackBStore;
|
---|
187 | DWORD NextCallback;
|
---|
188 | DWORD FramePointer;
|
---|
189 | DWORD64 KiCallUserMode;
|
---|
190 | DWORD64 KeUserCallbackDispatcher;
|
---|
191 | DWORD64 SystemRangeStart;
|
---|
192 | DWORD64 KiUserExceptionDispatcher;
|
---|
193 | DWORD64 StackBase;
|
---|
194 | DWORD64 StackLimit;
|
---|
195 | DWORD BuildVersion;
|
---|
196 | DWORD RetpolineStubFunctionTableSize;
|
---|
197 | DWORD64 RetpolineStubFunctionTable;
|
---|
198 | DWORD RetpolineStubOffset;
|
---|
199 | DWORD RetpolineStubSize;
|
---|
200 | DWORD64 Reserved0[2];
|
---|
201 | } KDHELP64,*PKDHELP64;
|
---|
202 |
|
---|
203 | #ifdef _IMAGEHLP64
|
---|
204 | #define KDHELP KDHELP64
|
---|
205 | #define PKDHELP PKDHELP64
|
---|
206 | #else
|
---|
207 | typedef struct _KDHELP {
|
---|
208 | DWORD Thread;
|
---|
209 | DWORD ThCallbackStack;
|
---|
210 | DWORD NextCallback;
|
---|
211 | DWORD FramePointer;
|
---|
212 | DWORD KiCallUserMode;
|
---|
213 | DWORD KeUserCallbackDispatcher;
|
---|
214 | DWORD SystemRangeStart;
|
---|
215 | DWORD ThCallbackBStore;
|
---|
216 | DWORD KiUserExceptionDispatcher;
|
---|
217 | DWORD StackBase;
|
---|
218 | DWORD StackLimit;
|
---|
219 | DWORD Reserved[5];
|
---|
220 | } KDHELP,*PKDHELP;
|
---|
221 |
|
---|
222 | static __inline void KdHelp32To64(PKDHELP p32,PKDHELP64 p64) {
|
---|
223 | p64->Thread = p32->Thread;
|
---|
224 | p64->ThCallbackStack = p32->ThCallbackStack;
|
---|
225 | p64->NextCallback = p32->NextCallback;
|
---|
226 | p64->FramePointer = p32->FramePointer;
|
---|
227 | p64->KiCallUserMode = p32->KiCallUserMode;
|
---|
228 | p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher;
|
---|
229 | p64->SystemRangeStart = p32->SystemRangeStart;
|
---|
230 | p64->KiUserExceptionDispatcher = p32->KiUserExceptionDispatcher;
|
---|
231 | p64->StackBase = p32->StackBase;
|
---|
232 | p64->StackLimit = p32->StackLimit;
|
---|
233 | }
|
---|
234 | #endif
|
---|
235 |
|
---|
236 | typedef struct _tagSTACKFRAME64 {
|
---|
237 | ADDRESS64 AddrPC;
|
---|
238 | ADDRESS64 AddrReturn;
|
---|
239 | ADDRESS64 AddrFrame;
|
---|
240 | ADDRESS64 AddrStack;
|
---|
241 | ADDRESS64 AddrBStore;
|
---|
242 | PVOID FuncTableEntry;
|
---|
243 | DWORD64 Params[4];
|
---|
244 | WINBOOL Far;
|
---|
245 | WINBOOL Virtual;
|
---|
246 | DWORD64 Reserved[3];
|
---|
247 | KDHELP64 KdHelp;
|
---|
248 | } STACKFRAME64,*LPSTACKFRAME64;
|
---|
249 |
|
---|
250 | #define INLINE_FRAME_CONTEXT_INIT 0
|
---|
251 | #define INLINE_FRAME_CONTEXT_IGNORE 0xFFFFFFFF
|
---|
252 |
|
---|
253 | typedef struct _tagSTACKFRAME_EX {
|
---|
254 | ADDRESS64 AddrPC;
|
---|
255 | ADDRESS64 AddrReturn;
|
---|
256 | ADDRESS64 AddrFrame;
|
---|
257 | ADDRESS64 AddrStack;
|
---|
258 | ADDRESS64 AddrBStore;
|
---|
259 | PVOID FuncTableEntry;
|
---|
260 | DWORD64 Params[4];
|
---|
261 | WINBOOL Far;
|
---|
262 | WINBOOL Virtual;
|
---|
263 | DWORD64 Reserved[3];
|
---|
264 | KDHELP64 KdHelp;
|
---|
265 | DWORD StackFrameSize;
|
---|
266 | DWORD InlineFrameContext;
|
---|
267 | } STACKFRAME_EX,*LPSTACKFRAME_EX;
|
---|
268 |
|
---|
269 | #ifdef _IMAGEHLP64
|
---|
270 | #define STACKFRAME STACKFRAME64
|
---|
271 | #define LPSTACKFRAME LPSTACKFRAME64
|
---|
272 | #else
|
---|
273 | typedef struct _tagSTACKFRAME {
|
---|
274 | ADDRESS AddrPC;
|
---|
275 | ADDRESS AddrReturn;
|
---|
276 | ADDRESS AddrFrame;
|
---|
277 | ADDRESS AddrStack;
|
---|
278 | PVOID FuncTableEntry;
|
---|
279 | DWORD Params[4];
|
---|
280 | WINBOOL Far;
|
---|
281 | WINBOOL Virtual;
|
---|
282 | DWORD Reserved[3];
|
---|
283 | KDHELP KdHelp;
|
---|
284 | ADDRESS AddrBStore;
|
---|
285 | } STACKFRAME,*LPSTACKFRAME;
|
---|
286 | #endif
|
---|
287 |
|
---|
288 | typedef WINBOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE64)(HANDLE hProcess,DWORD64 qwBaseAddress,PVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead);
|
---|
289 | typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE hProcess,DWORD64 AddrBase);
|
---|
290 | typedef DWORD64 (WINAPI *PGET_MODULE_BASE_ROUTINE64)(HANDLE hProcess,DWORD64 Address);
|
---|
291 | typedef DWORD64 (WINAPI *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE hProcess,HANDLE hThread,LPADDRESS64 lpaddr);
|
---|
292 |
|
---|
293 | WINBOOL IMAGEAPI StackWalk64(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME64 StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE64
|
---|
294 | GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress);
|
---|
295 |
|
---|
296 | #ifdef _IMAGEHLP64
|
---|
297 | #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
|
---|
298 | #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
|
---|
299 | #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
|
---|
300 | #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
|
---|
301 | #define StackWalk StackWalk64
|
---|
302 | #else
|
---|
303 | typedef WINBOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE hProcess,DWORD lpBaseAddress,PVOID lpBuffer,DWORD nSize,PDWORD lpNumberOfBytesRead);
|
---|
304 | typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE hProcess,DWORD AddrBase);
|
---|
305 | typedef DWORD (WINAPI *PGET_MODULE_BASE_ROUTINE)(HANDLE hProcess,DWORD Address);
|
---|
306 | typedef DWORD (WINAPI *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE hProcess,HANDLE hThread,LPADDRESS lpaddr);
|
---|
307 |
|
---|
308 | WINBOOL IMAGEAPI StackWalk(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE
|
---|
309 | GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
|
---|
310 | #endif
|
---|
311 |
|
---|
312 | #define API_VERSION_NUMBER 11
|
---|
313 |
|
---|
314 | typedef struct API_VERSION {
|
---|
315 | USHORT MajorVersion;
|
---|
316 | USHORT MinorVersion;
|
---|
317 | USHORT Revision;
|
---|
318 | USHORT Reserved;
|
---|
319 | } API_VERSION,*LPAPI_VERSION;
|
---|
320 |
|
---|
321 | LPAPI_VERSION IMAGEAPI ImagehlpApiVersion(VOID);
|
---|
322 | LPAPI_VERSION IMAGEAPI ImagehlpApiVersionEx(LPAPI_VERSION AppVersion);
|
---|
323 | DWORD IMAGEAPI GetTimestampForLoadedLibrary(HMODULE Module);
|
---|
324 |
|
---|
325 | typedef WINBOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext);
|
---|
326 | typedef WINBOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext);
|
---|
327 | typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
|
---|
328 | typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
|
---|
329 | typedef WINBOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext);
|
---|
330 | typedef WINBOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext);
|
---|
331 | typedef WINBOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE hProcess,ULONG ActionCode,ULONG64 CallbackData,ULONG64 UserContext);
|
---|
332 | typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE hProcess,DWORD AddrBase,PVOID UserContext);
|
---|
333 | typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE hProcess,ULONG64 AddrBase,ULONG64 UserContext);
|
---|
334 |
|
---|
335 | #ifdef _IMAGEHLP64
|
---|
336 | #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64
|
---|
337 | #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
|
---|
338 | #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W
|
---|
339 | #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64
|
---|
340 | #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
|
---|
341 | #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
|
---|
342 | #else
|
---|
343 | typedef WINBOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR ModuleName,ULONG BaseOfDll,PVOID UserContext);
|
---|
344 | typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
|
---|
345 | typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
|
---|
346 | typedef WINBOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR ModuleName,ULONG ModuleBase,ULONG ModuleSize,PVOID UserContext);
|
---|
347 | typedef WINBOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE hProcess,ULONG ActionCode,PVOID CallbackData,PVOID UserContext);
|
---|
348 | #endif
|
---|
349 |
|
---|
350 | #define SYMFLAG_VALUEPRESENT 0x00000001
|
---|
351 | #define SYMFLAG_REGISTER 0x00000008
|
---|
352 | #define SYMFLAG_REGREL 0x00000010
|
---|
353 | #define SYMFLAG_FRAMEREL 0x00000020
|
---|
354 | #define SYMFLAG_PARAMETER 0x00000040
|
---|
355 | #define SYMFLAG_LOCAL 0x00000080
|
---|
356 | #define SYMFLAG_CONSTANT 0x00000100
|
---|
357 | #define SYMFLAG_EXPORT 0x00000200
|
---|
358 | #define SYMFLAG_FORWARDER 0x00000400
|
---|
359 | #define SYMFLAG_FUNCTION 0x00000800
|
---|
360 | #define SYMFLAG_VIRTUAL 0x00001000
|
---|
361 | #define SYMFLAG_THUNK 0x00002000
|
---|
362 | #define SYMFLAG_TLSREL 0x00004000
|
---|
363 | #define SYMFLAG_SLOT 0x00008000
|
---|
364 | #define SYMFLAG_ILREL 0x00010000
|
---|
365 | #define SYMFLAG_METADATA 0x00020000
|
---|
366 | #define SYMFLAG_CLR_TOKEN 0x00040000
|
---|
367 | #define SYMFLAG_NULL 0x00080000
|
---|
368 | #define SYMFLAG_FUNC_NO_RETURN 0x00100000
|
---|
369 | #define SYMFLAG_SYNTHETIC_ZEROBASE 0x00200000
|
---|
370 | #define SYMFLAG_PUBLIC_CODE 0x00400000
|
---|
371 | #define SYMFLAG_REGREL_ALIASINDIR 0x00800000
|
---|
372 | #define SYMFLAG_FIXUP_ARM64X 0x01000000
|
---|
373 | #define SYMFLAG_GLOBAL 0x02000000
|
---|
374 | #define SYMFLAG_RESET 0x80000000
|
---|
375 |
|
---|
376 | typedef enum {
|
---|
377 | SymNone = 0,
|
---|
378 | SymCoff,
|
---|
379 | SymCv,
|
---|
380 | SymPdb,
|
---|
381 | SymExport,
|
---|
382 | SymDeferred,
|
---|
383 | SymSym,
|
---|
384 | SymDia,
|
---|
385 | SymVirtual,
|
---|
386 | NumSymTypes
|
---|
387 | } SYM_TYPE;
|
---|
388 |
|
---|
389 | typedef struct _IMAGEHLP_SYMBOL64 {
|
---|
390 | DWORD SizeOfStruct;
|
---|
391 | DWORD64 Address;
|
---|
392 | DWORD Size;
|
---|
393 | DWORD Flags;
|
---|
394 | DWORD MaxNameLength;
|
---|
395 | CHAR Name[1];
|
---|
396 | } IMAGEHLP_SYMBOL64,*PIMAGEHLP_SYMBOL64;
|
---|
397 |
|
---|
398 | typedef struct _IMAGEHLP_SYMBOL64_PACKAGE {
|
---|
399 | IMAGEHLP_SYMBOL64 sym;
|
---|
400 | CHAR name[MAX_SYM_NAME + 1];
|
---|
401 | } IMAGEHLP_SYMBOL64_PACKAGE,*PIMAGEHLP_SYMBOL64_PACKAGE;
|
---|
402 |
|
---|
403 | #ifdef _IMAGEHLP64
|
---|
404 |
|
---|
405 | #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
|
---|
406 | #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
|
---|
407 | #define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE
|
---|
408 | #define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE
|
---|
409 | #else
|
---|
410 |
|
---|
411 | typedef struct _IMAGEHLP_SYMBOL {
|
---|
412 | DWORD SizeOfStruct;
|
---|
413 | DWORD Address;
|
---|
414 | DWORD Size;
|
---|
415 | DWORD Flags;
|
---|
416 | DWORD MaxNameLength;
|
---|
417 | CHAR Name[1];
|
---|
418 | } IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL;
|
---|
419 |
|
---|
420 | typedef struct _IMAGEHLP_SYMBOL_PACKAGE {
|
---|
421 | IMAGEHLP_SYMBOL sym;
|
---|
422 | CHAR name[MAX_SYM_NAME + 1];
|
---|
423 | } IMAGEHLP_SYMBOL_PACKAGE,*PIMAGEHLP_SYMBOL_PACKAGE;
|
---|
424 | #endif
|
---|
425 |
|
---|
426 | typedef struct _IMAGEHLP_MODULE64 {
|
---|
427 | DWORD SizeOfStruct;
|
---|
428 | DWORD64 BaseOfImage;
|
---|
429 | DWORD ImageSize;
|
---|
430 | DWORD TimeDateStamp;
|
---|
431 | DWORD CheckSum;
|
---|
432 | DWORD NumSyms;
|
---|
433 | SYM_TYPE SymType;
|
---|
434 | CHAR ModuleName[32];
|
---|
435 | CHAR ImageName[256];
|
---|
436 | CHAR LoadedImageName[256];
|
---|
437 | CHAR LoadedPdbName[256];
|
---|
438 | DWORD CVSig;
|
---|
439 | CHAR CVData[MAX_PATH*3];
|
---|
440 | DWORD PdbSig;
|
---|
441 | GUID PdbSig70;
|
---|
442 | DWORD PdbAge;
|
---|
443 | WINBOOL PdbUnmatched;
|
---|
444 | WINBOOL DbgUnmatched;
|
---|
445 | WINBOOL LineNumbers;
|
---|
446 | WINBOOL GlobalSymbols;
|
---|
447 | WINBOOL TypeInfo;
|
---|
448 | WINBOOL SourceIndexed;
|
---|
449 | WINBOOL Publics;
|
---|
450 | DWORD MachineType;
|
---|
451 | DWORD Reserved;
|
---|
452 | } IMAGEHLP_MODULE64,*PIMAGEHLP_MODULE64;
|
---|
453 |
|
---|
454 | typedef struct _IMAGEHLP_MODULE64_EX {
|
---|
455 | IMAGEHLP_MODULE64 Module;
|
---|
456 | DWORD RegionFlags;
|
---|
457 | } IMAGEHLP_MODULE64_EX,*PIMAGEHLP_MODULE64_EX;
|
---|
458 |
|
---|
459 | typedef struct _IMAGEHLP_MODULE64W {
|
---|
460 | DWORD SizeOfStruct;
|
---|
461 | DWORD64 BaseOfImage;
|
---|
462 | DWORD ImageSize;
|
---|
463 | DWORD TimeDateStamp;
|
---|
464 | DWORD CheckSum;
|
---|
465 | DWORD NumSyms;
|
---|
466 | SYM_TYPE SymType;
|
---|
467 | WCHAR ModuleName[32];
|
---|
468 | WCHAR ImageName[256];
|
---|
469 | WCHAR LoadedImageName[256];
|
---|
470 | WCHAR LoadedPdbName[256];
|
---|
471 | DWORD CVSig;
|
---|
472 | WCHAR CVData[MAX_PATH*3];
|
---|
473 | DWORD PdbSig;
|
---|
474 | GUID PdbSig70;
|
---|
475 | DWORD PdbAge;
|
---|
476 | WINBOOL PdbUnmatched;
|
---|
477 | WINBOOL DbgUnmatched;
|
---|
478 | WINBOOL LineNumbers;
|
---|
479 | WINBOOL GlobalSymbols;
|
---|
480 | WINBOOL TypeInfo;
|
---|
481 | WINBOOL SourceIndexed;
|
---|
482 | WINBOOL Publics;
|
---|
483 | DWORD MachineType;
|
---|
484 | DWORD Reserved;
|
---|
485 | } IMAGEHLP_MODULEW64,*PIMAGEHLP_MODULEW64;
|
---|
486 |
|
---|
487 | typedef struct _IMAGEHLP_MODULEW64_EX {
|
---|
488 | IMAGEHLP_MODULEW64 Module;
|
---|
489 | DWORD RegionFlags;
|
---|
490 | } IMAGEHLP_MODULEW64_EX,*PIMAGEHLP_MODULEW64_EX;
|
---|
491 |
|
---|
492 | #ifdef _IMAGEHLP64
|
---|
493 | #define IMAGEHLP_MODULE IMAGEHLP_MODULE64
|
---|
494 | #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
|
---|
495 | #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
|
---|
496 | #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
|
---|
497 | #else
|
---|
498 | typedef struct _IMAGEHLP_MODULE {
|
---|
499 | DWORD SizeOfStruct;
|
---|
500 | DWORD BaseOfImage;
|
---|
501 | DWORD ImageSize;
|
---|
502 | DWORD TimeDateStamp;
|
---|
503 | DWORD CheckSum;
|
---|
504 | DWORD NumSyms;
|
---|
505 | SYM_TYPE SymType;
|
---|
506 | CHAR ModuleName[32];
|
---|
507 | CHAR ImageName[256];
|
---|
508 | CHAR LoadedImageName[256];
|
---|
509 | } IMAGEHLP_MODULE,*PIMAGEHLP_MODULE;
|
---|
510 |
|
---|
511 | typedef struct _IMAGEHLP_MODULEW {
|
---|
512 | DWORD SizeOfStruct;
|
---|
513 | DWORD BaseOfImage;
|
---|
514 | DWORD ImageSize;
|
---|
515 | DWORD TimeDateStamp;
|
---|
516 | DWORD CheckSum;
|
---|
517 | DWORD NumSyms;
|
---|
518 | SYM_TYPE SymType;
|
---|
519 | WCHAR ModuleName[32];
|
---|
520 | WCHAR ImageName[256];
|
---|
521 | WCHAR LoadedImageName[256];
|
---|
522 | } IMAGEHLP_MODULEW,*PIMAGEHLP_MODULEW;
|
---|
523 | #endif
|
---|
524 |
|
---|
525 | typedef struct _IMAGEHLP_LINE64 {
|
---|
526 | DWORD SizeOfStruct;
|
---|
527 | PVOID Key;
|
---|
528 | DWORD LineNumber;
|
---|
529 | PCHAR FileName;
|
---|
530 | DWORD64 Address;
|
---|
531 | } IMAGEHLP_LINE64,*PIMAGEHLP_LINE64;
|
---|
532 |
|
---|
533 | typedef struct _IMAGEHLP_LINEW64 {
|
---|
534 | DWORD SizeOfStruct;
|
---|
535 | PVOID Key;
|
---|
536 | DWORD LineNumber;
|
---|
537 | PWSTR FileName;
|
---|
538 | DWORD64 Address;
|
---|
539 | } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
|
---|
540 |
|
---|
541 | #ifdef _IMAGEHLP64
|
---|
542 | #define IMAGEHLP_LINE IMAGEHLP_LINE64
|
---|
543 | #define PIMAGEHLP_LINE PIMAGEHLP_LINE64
|
---|
544 | #else
|
---|
545 | typedef struct _IMAGEHLP_LINE {
|
---|
546 | DWORD SizeOfStruct;
|
---|
547 | PVOID Key;
|
---|
548 | DWORD LineNumber;
|
---|
549 | PCHAR FileName;
|
---|
550 | DWORD Address;
|
---|
551 | } IMAGEHLP_LINE,*PIMAGEHLP_LINE;
|
---|
552 | #endif
|
---|
553 |
|
---|
554 | typedef struct _SOURCEFILE {
|
---|
555 | DWORD64 ModBase;
|
---|
556 | PCHAR FileName;
|
---|
557 | } SOURCEFILE,*PSOURCEFILE;
|
---|
558 |
|
---|
559 | typedef struct _SOURCEFILEW {
|
---|
560 | DWORD64 ModBase;
|
---|
561 | PWCHAR FileName;
|
---|
562 | } SOURCEFILEW,*PSOURCEFILEW;
|
---|
563 |
|
---|
564 | #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
|
---|
565 | #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
|
---|
566 | #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
|
---|
567 | #define CBA_SYMBOLS_UNLOADED 0x00000004
|
---|
568 | #define CBA_DUPLICATE_SYMBOL 0x00000005
|
---|
569 | #define CBA_READ_MEMORY 0x00000006
|
---|
570 | #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
|
---|
571 | #define CBA_SET_OPTIONS 0x00000008
|
---|
572 | #define CBA_EVENT 0x00000010
|
---|
573 | #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
|
---|
574 | #define CBA_DEBUG_INFO 0x10000000
|
---|
575 | #define CBA_SRCSRV_INFO 0x20000000
|
---|
576 | #define CBA_SRCSRV_EVENT 0x40000000
|
---|
577 |
|
---|
578 | typedef struct _IMAGEHLP_CBA_READ_MEMORY {
|
---|
579 | DWORD64 addr;
|
---|
580 | PVOID buf;
|
---|
581 | DWORD bytes;
|
---|
582 | DWORD *bytesread;
|
---|
583 | } IMAGEHLP_CBA_READ_MEMORY,*PIMAGEHLP_CBA_READ_MEMORY;
|
---|
584 |
|
---|
585 | enum {
|
---|
586 | sevInfo = 0,
|
---|
587 | sevProblem,
|
---|
588 | sevAttn,
|
---|
589 | sevFatal,
|
---|
590 | sevMax
|
---|
591 | };
|
---|
592 |
|
---|
593 | typedef struct _IMAGEHLP_CBA_EVENT {
|
---|
594 | DWORD severity;
|
---|
595 | DWORD code;
|
---|
596 | PCHAR desc;
|
---|
597 | PVOID object;
|
---|
598 | } IMAGEHLP_CBA_EVENT,*PIMAGEHLP_CBA_EVENT;
|
---|
599 |
|
---|
600 | typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 {
|
---|
601 | DWORD SizeOfStruct;
|
---|
602 | DWORD64 BaseOfImage;
|
---|
603 | DWORD CheckSum;
|
---|
604 | DWORD TimeDateStamp;
|
---|
605 | CHAR FileName[MAX_PATH];
|
---|
606 | BOOLEAN Reparse;
|
---|
607 | HANDLE hFile;
|
---|
608 | DWORD Flags;
|
---|
609 | } IMAGEHLP_DEFERRED_SYMBOL_LOAD64,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
|
---|
610 |
|
---|
611 | #define DSLFLAG_MISMATCHED_PDB 0x1
|
---|
612 | #define DSLFLAG_MISMATCHED_DBG 0x2
|
---|
613 |
|
---|
614 | #ifdef _IMAGEHLP64
|
---|
615 | #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
|
---|
616 | #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
|
---|
617 | #else
|
---|
618 | typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
|
---|
619 | DWORD SizeOfStruct;
|
---|
620 | DWORD BaseOfImage;
|
---|
621 | DWORD CheckSum;
|
---|
622 | DWORD TimeDateStamp;
|
---|
623 | CHAR FileName[MAX_PATH];
|
---|
624 | BOOLEAN Reparse;
|
---|
625 | HANDLE hFile;
|
---|
626 | } IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
|
---|
627 | #endif
|
---|
628 |
|
---|
629 | typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 {
|
---|
630 | DWORD SizeOfStruct;
|
---|
631 | DWORD NumberOfDups;
|
---|
632 | PIMAGEHLP_SYMBOL64 Symbol;
|
---|
633 | DWORD SelectedSymbol;
|
---|
634 | } IMAGEHLP_DUPLICATE_SYMBOL64,*PIMAGEHLP_DUPLICATE_SYMBOL64;
|
---|
635 |
|
---|
636 | #ifdef _IMAGEHLP64
|
---|
637 | #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
|
---|
638 | #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
|
---|
639 | #else
|
---|
640 | typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
|
---|
641 | DWORD SizeOfStruct;
|
---|
642 | DWORD NumberOfDups;
|
---|
643 | PIMAGEHLP_SYMBOL Symbol;
|
---|
644 | DWORD SelectedSymbol;
|
---|
645 | } IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL;
|
---|
646 | #endif
|
---|
647 |
|
---|
648 | typedef struct _SYMSRV_INDEX_INFO {
|
---|
649 | DWORD sizeofstruct;
|
---|
650 | CHAR file[MAX_PATH +1];
|
---|
651 | WINBOOL stripped;
|
---|
652 | DWORD timestamp;
|
---|
653 | DWORD size;
|
---|
654 | CHAR dbgfile[MAX_PATH +1];
|
---|
655 | CHAR pdbfile[MAX_PATH + 1];
|
---|
656 | GUID guid;
|
---|
657 | DWORD sig;
|
---|
658 | DWORD age;
|
---|
659 | } SYMSRV_INDEX_INFO, *PSYMSRV_INDEX_INFO;
|
---|
660 |
|
---|
661 | typedef struct _SYMSRV_INDEX_INFOW {
|
---|
662 | DWORD sizeofstruct;
|
---|
663 | WCHAR file[MAX_PATH +1];
|
---|
664 | WINBOOL stripped;
|
---|
665 | DWORD timestamp;
|
---|
666 | DWORD size;
|
---|
667 | WCHAR dbgfile[MAX_PATH +1];
|
---|
668 | WCHAR pdbfile[MAX_PATH + 1];
|
---|
669 | GUID guid;
|
---|
670 | DWORD sig;
|
---|
671 | DWORD age;
|
---|
672 | } SYMSRV_INDEX_INFOW, *PSYMSRV_INDEX_INFOW;
|
---|
673 |
|
---|
674 | WINBOOL IMAGEAPI SymSetParentWindow(HWND hwnd);
|
---|
675 | PCHAR IMAGEAPI SymSetHomeDirectory(HANDLE hProcess,PCSTR dir);
|
---|
676 | PCHAR IMAGEAPI SymSetHomeDirectoryW(HANDLE hProcess,PCWSTR dir);
|
---|
677 | PCHAR IMAGEAPI SymGetHomeDirectory(DWORD type,PSTR dir,size_t size);
|
---|
678 | PWCHAR IMAGEAPI SymGetHomeDirectoryW(DWORD type,PWSTR dir,size_t size);
|
---|
679 |
|
---|
680 | #define hdBase 0
|
---|
681 | #define hdSym 1
|
---|
682 | #define hdSrc 2
|
---|
683 | #define hdMax 3
|
---|
684 |
|
---|
685 | #define SYMOPT_CASE_INSENSITIVE 0x00000001
|
---|
686 | #define SYMOPT_UNDNAME 0x00000002
|
---|
687 | #define SYMOPT_DEFERRED_LOADS 0x00000004
|
---|
688 | #define SYMOPT_NO_CPP 0x00000008
|
---|
689 | #define SYMOPT_LOAD_LINES 0x00000010
|
---|
690 | #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
|
---|
691 | #define SYMOPT_LOAD_ANYTHING 0x00000040
|
---|
692 | #define SYMOPT_IGNORE_CVREC 0x00000080
|
---|
693 | #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
|
---|
694 | #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
|
---|
695 | #define SYMOPT_EXACT_SYMBOLS 0x00000400
|
---|
696 | #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
|
---|
697 | #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
|
---|
698 | #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
|
---|
699 | #define SYMOPT_PUBLICS_ONLY 0x00004000
|
---|
700 | #define SYMOPT_NO_PUBLICS 0x00008000
|
---|
701 | #define SYMOPT_AUTO_PUBLICS 0x00010000
|
---|
702 | #define SYMOPT_NO_IMAGE_SEARCH 0x00020000
|
---|
703 | #define SYMOPT_SECURE 0x00040000
|
---|
704 | #define SYMOPT_NO_PROMPTS 0x00080000
|
---|
705 | #define SYMOPT_ALLOW_ZERO_ADDRESS 0x01000000
|
---|
706 | #define SYMOPT_DISABLE_SYMSRV_AUTODETECT 0x02000000
|
---|
707 | #define SYMOPT_FAVOR_COMPRESSED 0x00800000
|
---|
708 | #define SYMOPT_FLAT_DIRECTORY 0x00400000
|
---|
709 | #define SYMOPT_IGNORE_IMAGEDIR 0x00200000
|
---|
710 | #define SYMOPT_OVERWRITE 0x00100000
|
---|
711 |
|
---|
712 | #define SYMOPT_DEBUG 0x80000000
|
---|
713 |
|
---|
714 | DWORD IMAGEAPI SymSetOptions(DWORD SymOptions);
|
---|
715 | DWORD IMAGEAPI SymGetOptions(VOID);
|
---|
716 | WINBOOL IMAGEAPI SymCleanup(HANDLE hProcess);
|
---|
717 | WINBOOL IMAGEAPI SymMatchString(PCSTR string,PCSTR expression,WINBOOL fCase);
|
---|
718 | WINBOOL IMAGEAPI SymMatchStringW(PCWSTR string,PCWSTR expression,WINBOOL fCase);
|
---|
719 |
|
---|
720 | typedef WINBOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE pSourceFile,PVOID UserContext);
|
---|
721 | typedef WINBOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW pSourceFile,PVOID UserContext);
|
---|
722 | #define PSYM_ENUMSOURCFILES_CALLBACK PSYM_ENUMSOURCEFILES_CALLBACK
|
---|
723 |
|
---|
724 | WINBOOL IMAGEAPI SymEnumSourceFiles(HANDLE hProcess,ULONG64 ModBase,PCSTR Mask,PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles,PVOID UserContext);
|
---|
725 | WINBOOL IMAGEAPI SymEnumSourceFilesW(HANDLE hProcess,ULONG64 ModBase,PCWSTR Mask,PSYM_ENUMSOURCEFILES_CALLBACKW cbSrcFiles,PVOID UserContext);
|
---|
726 | WINBOOL IMAGEAPI SymEnumerateModules64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,PVOID UserContext);
|
---|
727 | WINBOOL IMAGEAPI SymEnumerateModulesW64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback,PVOID UserContext);
|
---|
728 |
|
---|
729 | #ifdef _IMAGEHLP64
|
---|
730 | #define SymEnumerateModules SymEnumerateModules64
|
---|
731 | #else
|
---|
732 | WINBOOL IMAGEAPI SymEnumerateModules(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,PVOID UserContext);
|
---|
733 | #endif
|
---|
734 |
|
---|
735 | WINBOOL IMAGEAPI SymEnumerateSymbols64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,PVOID UserContext);
|
---|
736 | WINBOOL IMAGEAPI SymEnumerateSymbolsW64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,PVOID UserContext);
|
---|
737 |
|
---|
738 | #ifdef _IMAGEHLP64
|
---|
739 | #define SymEnumerateSymbols SymEnumerateSymbols64
|
---|
740 | #define SymEnumerateSymbolsW SymEnumerateSymbolsW64
|
---|
741 | #else
|
---|
742 | WINBOOL IMAGEAPI SymEnumerateSymbols(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
|
---|
743 | WINBOOL IMAGEAPI SymEnumerateSymbolsW(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
|
---|
744 | #endif
|
---|
745 |
|
---|
746 | WINBOOL IMAGEAPI EnumerateLoadedModules64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,PVOID UserContext);
|
---|
747 | WINBOOL IMAGEAPI EnumerateLoadedModulesW64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback,PVOID UserContext);
|
---|
748 |
|
---|
749 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
750 | #define EnumerateLoadedModules64 EnumerateLoadedModulesW64
|
---|
751 | #endif
|
---|
752 |
|
---|
753 | #ifdef _IMAGEHLP64
|
---|
754 | #define EnumerateLoadedModules EnumerateLoadedModules64
|
---|
755 | #else
|
---|
756 | WINBOOL IMAGEAPI EnumerateLoadedModules(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,PVOID UserContext);
|
---|
757 | #endif
|
---|
758 |
|
---|
759 | PVOID IMAGEAPI SymFunctionTableAccess64(HANDLE hProcess,DWORD64 AddrBase);
|
---|
760 |
|
---|
761 | #ifdef _IMAGEHLP64
|
---|
762 | #define SymFunctionTableAccess SymFunctionTableAccess64
|
---|
763 | #else
|
---|
764 | PVOID IMAGEAPI SymFunctionTableAccess(HANDLE hProcess,DWORD AddrBase);
|
---|
765 | #endif
|
---|
766 |
|
---|
767 | WINBOOL IMAGEAPI SymGetModuleInfo64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULE64 ModuleInfo);
|
---|
768 | WINBOOL IMAGEAPI SymGetModuleInfoW64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULEW64 ModuleInfo);
|
---|
769 |
|
---|
770 | #ifdef _IMAGEHLP64
|
---|
771 | #define SymGetModuleInfo SymGetModuleInfo64
|
---|
772 | #define SymGetModuleInfoW SymGetModuleInfoW64
|
---|
773 | #else
|
---|
774 | WINBOOL IMAGEAPI SymGetModuleInfo(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULE ModuleInfo);
|
---|
775 | WINBOOL IMAGEAPI SymGetModuleInfoW(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULEW ModuleInfo);
|
---|
776 | #endif
|
---|
777 |
|
---|
778 | DWORD64 IMAGEAPI SymGetModuleBase64(HANDLE hProcess,DWORD64 qwAddr);
|
---|
779 |
|
---|
780 | #ifdef _IMAGEHLP64
|
---|
781 | #define SymGetModuleBase SymGetModuleBase64
|
---|
782 | #else
|
---|
783 | DWORD IMAGEAPI SymGetModuleBase(HANDLE hProcess,DWORD dwAddr);
|
---|
784 | #endif
|
---|
785 |
|
---|
786 | WINBOOL IMAGEAPI SymGetSymNext64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
|
---|
787 |
|
---|
788 | #ifdef _IMAGEHLP64
|
---|
789 | #define SymGetSymNext SymGetSymNext64
|
---|
790 | #else
|
---|
791 | WINBOOL IMAGEAPI SymGetSymNext(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
|
---|
792 | #endif
|
---|
793 |
|
---|
794 | WINBOOL IMAGEAPI SymGetSymPrev64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
|
---|
795 |
|
---|
796 | #ifdef _IMAGEHLP64
|
---|
797 | #define SymGetSymPrev SymGetSymPrev64
|
---|
798 | #else
|
---|
799 | WINBOOL IMAGEAPI SymGetSymPrev(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
|
---|
800 | #endif
|
---|
801 |
|
---|
802 | typedef struct _SRCCODEINFO {
|
---|
803 | DWORD SizeOfStruct;
|
---|
804 | PVOID Key;
|
---|
805 | DWORD64 ModBase;
|
---|
806 | CHAR Obj[MAX_PATH + 1];
|
---|
807 | CHAR FileName[MAX_PATH + 1];
|
---|
808 | DWORD LineNumber;
|
---|
809 | DWORD64 Address;
|
---|
810 | } SRCCODEINFO,*PSRCCODEINFO;
|
---|
811 |
|
---|
812 | typedef struct _SRCCODEINFOW {
|
---|
813 | DWORD SizeOfStruct;
|
---|
814 | PVOID Key;
|
---|
815 | DWORD64 ModBase;
|
---|
816 | WCHAR Obj[MAX_PATH + 1];
|
---|
817 | WCHAR FileName[MAX_PATH + 1];
|
---|
818 | DWORD LineNumber;
|
---|
819 | DWORD64 Address;
|
---|
820 | } SRCCODEINFOW,*PSRCCODEINFOW;
|
---|
821 |
|
---|
822 | typedef WINBOOL (CALLBACK *PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO LineInfo,PVOID UserContext);
|
---|
823 | typedef WINBOOL (CALLBACK *PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW LineInfo,PVOID UserContext);
|
---|
824 |
|
---|
825 | WINBOOL IMAGEAPI SymEnumLines(HANDLE hProcess,ULONG64 Base,PCSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACK EnumLinesCallback,PVOID UserContext);
|
---|
826 | WINBOOL IMAGEAPI SymEnumLinesW(HANDLE hProcess,ULONG64 Base,PCWSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACKW EnumLinesCallback,PVOID UserContext);
|
---|
827 | WINBOOL IMAGEAPI SymGetLineFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE64 Line64);
|
---|
828 | WINBOOL IMAGEAPI SymGetLineFromAddrW64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINEW64 Line64);
|
---|
829 |
|
---|
830 | #ifdef _IMAGEHLP64
|
---|
831 | #define SymGetLineFromAddr SymGetLineFromAddr64
|
---|
832 | #else
|
---|
833 | WINBOOL IMAGEAPI SymGetLineFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE Line);
|
---|
834 | #endif
|
---|
835 |
|
---|
836 | WINBOOL IMAGEAPI SymGetLineFromName64(HANDLE hProcess,PCSTR ModuleName,PCSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE64 Line);
|
---|
837 | WINBOOL IMAGEAPI SymGetLineFromNameW64(HANDLE hProcess,PCWSTR ModuleName,PCWSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINEW64 Line);
|
---|
838 |
|
---|
839 | #ifdef _IMAGEHLP64
|
---|
840 | #define SymGetLineFromName SymGetLineFromName64
|
---|
841 | #else
|
---|
842 | WINBOOL IMAGEAPI SymGetLineFromName(HANDLE hProcess,PCSTR ModuleName,PCSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE Line);
|
---|
843 | #endif
|
---|
844 |
|
---|
845 | WINBOOL IMAGEAPI SymGetLineNext64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
|
---|
846 | WINBOOL IMAGEAPI SymGetLineNextW64(HANDLE hProcess,PIMAGEHLP_LINEW64 Line);
|
---|
847 |
|
---|
848 | #ifdef _IMAGEHLP64
|
---|
849 | #define SymGetLineNext SymGetLineNext64
|
---|
850 | #else
|
---|
851 | WINBOOL IMAGEAPI SymGetLineNext(HANDLE hProcess,PIMAGEHLP_LINE Line);
|
---|
852 | #endif
|
---|
853 |
|
---|
854 | WINBOOL IMAGEAPI SymGetLinePrev64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
|
---|
855 | WINBOOL IMAGEAPI SymGetLinePrevW64(HANDLE hProcess,PIMAGEHLP_LINEW64 Line);
|
---|
856 |
|
---|
857 | #ifdef _IMAGEHLP64
|
---|
858 | #define SymGetLinePrev SymGetLinePrev64
|
---|
859 | #else
|
---|
860 | WINBOOL IMAGEAPI SymGetLinePrev(HANDLE hProcess,PIMAGEHLP_LINE Line);
|
---|
861 | #endif
|
---|
862 |
|
---|
863 | WINBOOL IMAGEAPI SymMatchFileName(PCSTR FileName,PCSTR Match,PSTR *FileNameStop,PSTR *MatchStop);
|
---|
864 | WINBOOL IMAGEAPI SymMatchFileNameW(PCWSTR FileName,PCWSTR Match,PWSTR *FileNameStop,PWSTR *MatchStop);
|
---|
865 | WINBOOL IMAGEAPI SymInitialize(HANDLE hProcess,PCSTR UserSearchPath,WINBOOL fInvadeProcess);
|
---|
866 | WINBOOL IMAGEAPI SymInitializeW(HANDLE hProcess,PCWSTR UserSearchPath,WINBOOL fInvadeProcess);
|
---|
867 | WINBOOL IMAGEAPI SymGetSearchPath(HANDLE hProcess,PSTR SearchPath,DWORD SearchPathLength);
|
---|
868 | WINBOOL IMAGEAPI SymGetSearchPathW(HANDLE hProcess,PWSTR SearchPath,DWORD SearchPathLength);
|
---|
869 | WINBOOL IMAGEAPI SymSetSearchPath(HANDLE hProcess,PCSTR SearchPath);
|
---|
870 | WINBOOL IMAGEAPI SymSetSearchPathW(HANDLE hProcess,PCWSTR SearchPath);
|
---|
871 | DWORD64 IMAGEAPI SymLoadModule64(HANDLE hProcess,HANDLE hFile,PCSTR ImageName,PCSTR ModuleName,DWORD64 BaseOfDll,DWORD SizeOfDll);
|
---|
872 |
|
---|
873 | #define SLMFLAG_VIRTUAL 0x1
|
---|
874 |
|
---|
875 | DWORD64 IMAGEAPI SymLoadModuleEx(HANDLE hProcess,HANDLE hFile,PCSTR ImageName,PCSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags);
|
---|
876 | DWORD64 IMAGEAPI SymLoadModuleExW(HANDLE hProcess,HANDLE hFile,PCWSTR ImageName,PCWSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags);
|
---|
877 |
|
---|
878 | #ifdef _IMAGEHLP64
|
---|
879 | #define SymLoadModule SymLoadModule64
|
---|
880 | #else
|
---|
881 | DWORD IMAGEAPI SymLoadModule(HANDLE hProcess,HANDLE hFile,PCSTR ImageName,PCSTR ModuleName,DWORD BaseOfDll,DWORD SizeOfDll);
|
---|
882 | #endif
|
---|
883 |
|
---|
884 | WINBOOL IMAGEAPI SymUnloadModule64(HANDLE hProcess,DWORD64 BaseOfDll);
|
---|
885 |
|
---|
886 | #ifdef _IMAGEHLP64
|
---|
887 | #define SymUnloadModule SymUnloadModule64
|
---|
888 | #else
|
---|
889 | WINBOOL IMAGEAPI SymUnloadModule(HANDLE hProcess,DWORD BaseOfDll);
|
---|
890 | #endif
|
---|
891 |
|
---|
892 | WINBOOL IMAGEAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym,PSTR UnDecName,DWORD UnDecNameLength);
|
---|
893 |
|
---|
894 | #ifdef _IMAGEHLP64
|
---|
895 | #define SymUnDName SymUnDName64
|
---|
896 | #else
|
---|
897 | WINBOOL IMAGEAPI SymUnDName(PIMAGEHLP_SYMBOL sym,PSTR UnDecName,DWORD UnDecNameLength);
|
---|
898 | #endif
|
---|
899 |
|
---|
900 | WINBOOL IMAGEAPI SymRegisterCallback64(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext);
|
---|
901 | WINBOOL IMAGEAPI SymRegisterCallback64W(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext);
|
---|
902 |
|
---|
903 | WINBOOL IMAGEAPI SymRegisterFunctionEntryCallback64(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,ULONG64 UserContext);
|
---|
904 |
|
---|
905 | #ifdef _IMAGEHLP64
|
---|
906 | #define SymRegisterCallback SymRegisterCallback64
|
---|
907 | #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
|
---|
908 | #else
|
---|
909 | WINBOOL IMAGEAPI SymRegisterCallback(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK CallbackFunction,PVOID UserContext);
|
---|
910 | WINBOOL IMAGEAPI SymRegisterFunctionEntryCallback(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,PVOID UserContext);
|
---|
911 | #endif
|
---|
912 |
|
---|
913 | typedef struct _IMAGEHLP_SYMBOL_SRC {
|
---|
914 | DWORD sizeofstruct;
|
---|
915 | DWORD type;
|
---|
916 | char file[MAX_PATH];
|
---|
917 | } IMAGEHLP_SYMBOL_SRC,*PIMAGEHLP_SYMBOL_SRC;
|
---|
918 |
|
---|
919 | typedef struct _MODULE_TYPE_INFO {
|
---|
920 | USHORT dataLength;
|
---|
921 | USHORT leaf;
|
---|
922 | BYTE data[1];
|
---|
923 | } MODULE_TYPE_INFO,*PMODULE_TYPE_INFO;
|
---|
924 |
|
---|
925 | typedef struct _SYMBOL_INFO {
|
---|
926 | ULONG SizeOfStruct;
|
---|
927 | ULONG TypeIndex;
|
---|
928 | ULONG64 Reserved[2];
|
---|
929 | ULONG info;
|
---|
930 | ULONG Size;
|
---|
931 | ULONG64 ModBase;
|
---|
932 | ULONG Flags;
|
---|
933 | ULONG64 Value;
|
---|
934 | ULONG64 Address;
|
---|
935 | ULONG Register;
|
---|
936 | ULONG Scope;
|
---|
937 | ULONG Tag;
|
---|
938 | ULONG NameLen;
|
---|
939 | ULONG MaxNameLen;
|
---|
940 | CHAR Name[1];
|
---|
941 | } SYMBOL_INFO,*PSYMBOL_INFO;
|
---|
942 |
|
---|
943 | typedef struct _SYMBOL_INFOW {
|
---|
944 | ULONG SizeOfStruct;
|
---|
945 | ULONG TypeIndex;
|
---|
946 | ULONG64 Reserved[2];
|
---|
947 | ULONG info;
|
---|
948 | ULONG Size;
|
---|
949 | ULONG64 ModBase;
|
---|
950 | ULONG Flags;
|
---|
951 | ULONG64 Value;
|
---|
952 | ULONG64 Address;
|
---|
953 | ULONG Register;
|
---|
954 | ULONG Scope;
|
---|
955 | ULONG Tag;
|
---|
956 | ULONG NameLen;
|
---|
957 | ULONG MaxNameLen;
|
---|
958 | WCHAR Name[1];
|
---|
959 | } SYMBOL_INFOW,*PSYMBOL_INFOW;
|
---|
960 |
|
---|
961 | #define SYMFLAG_CLR_TOKEN 0x00040000
|
---|
962 | #define SYMFLAG_CONSTANT 0x00000100
|
---|
963 | #define SYMFLAG_EXPORT 0x00000200
|
---|
964 | #define SYMFLAG_FORWARDER 0x00000400
|
---|
965 | #define SYMFLAG_FRAMEREL 0x00000020
|
---|
966 | #define SYMFLAG_FUNCTION 0x00000800
|
---|
967 | #define SYMFLAG_ILREL 0x00010000
|
---|
968 | #define SYMFLAG_LOCAL 0x00000080
|
---|
969 | #define SYMFLAG_METADATA 0x00020000
|
---|
970 | #define SYMFLAG_PARAMETER 0x00000040
|
---|
971 | #define SYMFLAG_REGISTER 0x00000008
|
---|
972 | #define SYMFLAG_REGREL 0x00000010
|
---|
973 | #define SYMFLAG_SLOT 0x00008000
|
---|
974 | #define SYMFLAG_THUNK 0x00002000
|
---|
975 | #define SYMFLAG_TLSREL 0x00004000
|
---|
976 | #define SYMFLAG_VALUEPRESENT 0x00000001
|
---|
977 | #define SYMFLAG_VIRTUAL 0x00001000
|
---|
978 |
|
---|
979 | typedef struct _SYMBOL_INFO_PACKAGE {
|
---|
980 | SYMBOL_INFO si;
|
---|
981 | CHAR name[MAX_SYM_NAME + 1];
|
---|
982 | } SYMBOL_INFO_PACKAGE,*PSYMBOL_INFO_PACKAGE;
|
---|
983 |
|
---|
984 | typedef struct _IMAGEHLP_STACK_FRAME {
|
---|
985 | ULONG64 InstructionOffset;
|
---|
986 | ULONG64 ReturnOffset;
|
---|
987 | ULONG64 FrameOffset;
|
---|
988 | ULONG64 StackOffset;
|
---|
989 | ULONG64 BackingStoreOffset;
|
---|
990 | ULONG64 FuncTableEntry;
|
---|
991 | ULONG64 Params[4];
|
---|
992 | ULONG64 Reserved[5];
|
---|
993 | WINBOOL Virtual;
|
---|
994 | ULONG Reserved2;
|
---|
995 | } IMAGEHLP_STACK_FRAME,*PIMAGEHLP_STACK_FRAME;
|
---|
996 |
|
---|
997 | typedef VOID IMAGEHLP_CONTEXT,*PIMAGEHLP_CONTEXT;
|
---|
998 |
|
---|
999 | WINBOOL IMAGEAPI SymSetContext(HANDLE hProcess,PIMAGEHLP_STACK_FRAME StackFrame,PIMAGEHLP_CONTEXT Context);
|
---|
1000 | WINBOOL IMAGEAPI SymFromAddr(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFO Symbol);
|
---|
1001 | WINBOOL IMAGEAPI SymFromAddrW(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFOW Symbol);
|
---|
1002 | WINBOOL IMAGEAPI SymFromToken(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFO Symbol);
|
---|
1003 | WINBOOL IMAGEAPI SymFromTokenW(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFOW Symbol);
|
---|
1004 | WINBOOL IMAGEAPI SymFromName(HANDLE hProcess,PCSTR Name,PSYMBOL_INFO Symbol);
|
---|
1005 | WINBOOL IMAGEAPI SymFromNameW(HANDLE hProcess,PCWSTR Name,PSYMBOL_INFOW Symbol);
|
---|
1006 |
|
---|
1007 | typedef WINBOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO pSymInfo,ULONG SymbolSize,PVOID UserContext);
|
---|
1008 | typedef WINBOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW pSymInfo,ULONG SymbolSize,PVOID UserContext);
|
---|
1009 |
|
---|
1010 | WINBOOL IMAGEAPI SymEnumSymbols(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
|
---|
1011 | WINBOOL IMAGEAPI SymEnumSymbolsW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
|
---|
1012 | WINBOOL IMAGEAPI SymEnumSymbolsForAddr(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
|
---|
1013 | WINBOOL IMAGEAPI SymEnumSymbolsForAddrW(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
|
---|
1014 |
|
---|
1015 | #define SYMENUMFLAG_FULLSRCH 1
|
---|
1016 | #define SYMENUMFLAG_SPEEDSRCH 2
|
---|
1017 |
|
---|
1018 | typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO {
|
---|
1019 | TI_GET_SYMTAG,
|
---|
1020 | TI_GET_SYMNAME,
|
---|
1021 | TI_GET_LENGTH,
|
---|
1022 | TI_GET_TYPE,
|
---|
1023 | TI_GET_TYPEID,
|
---|
1024 | TI_GET_BASETYPE,
|
---|
1025 | TI_GET_ARRAYINDEXTYPEID,
|
---|
1026 | TI_FINDCHILDREN,
|
---|
1027 | TI_GET_DATAKIND,
|
---|
1028 | TI_GET_ADDRESSOFFSET,
|
---|
1029 | TI_GET_OFFSET,
|
---|
1030 | TI_GET_VALUE,
|
---|
1031 | TI_GET_COUNT,
|
---|
1032 | TI_GET_CHILDRENCOUNT,
|
---|
1033 | TI_GET_BITPOSITION,
|
---|
1034 | TI_GET_VIRTUALBASECLASS,
|
---|
1035 | TI_GET_VIRTUALTABLESHAPEID,
|
---|
1036 | TI_GET_VIRTUALBASEPOINTEROFFSET,
|
---|
1037 | TI_GET_CLASSPARENTID,
|
---|
1038 | TI_GET_NESTED,
|
---|
1039 | TI_GET_SYMINDEX,
|
---|
1040 | TI_GET_LEXICALPARENT,
|
---|
1041 | TI_GET_ADDRESS,
|
---|
1042 | TI_GET_THISADJUST,
|
---|
1043 | TI_GET_UDTKIND,
|
---|
1044 | TI_IS_EQUIV_TO,
|
---|
1045 | TI_GET_CALLING_CONVENTION
|
---|
1046 | } IMAGEHLP_SYMBOL_TYPE_INFO;
|
---|
1047 |
|
---|
1048 | typedef struct _TI_FINDCHILDREN_PARAMS {
|
---|
1049 | ULONG Count;
|
---|
1050 | ULONG Start;
|
---|
1051 | ULONG ChildId[1];
|
---|
1052 | } TI_FINDCHILDREN_PARAMS;
|
---|
1053 |
|
---|
1054 | WINBOOL IMAGEAPI SymGetTypeInfo(HANDLE hProcess,DWORD64 ModBase,ULONG TypeId,IMAGEHLP_SYMBOL_TYPE_INFO GetType,PVOID pInfo);
|
---|
1055 | WINBOOL IMAGEAPI SymEnumTypes(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
|
---|
1056 | WINBOOL IMAGEAPI SymEnumTypesW(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
|
---|
1057 | WINBOOL IMAGEAPI SymGetTypeFromName(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,PSYMBOL_INFO Symbol);
|
---|
1058 | WINBOOL IMAGEAPI SymGetTypeFromNameW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Name,PSYMBOL_INFOW Symbol);
|
---|
1059 | WINBOOL IMAGEAPI SymAddSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Size,DWORD Flags);
|
---|
1060 | WINBOOL IMAGEAPI SymAddSymbolW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Name,DWORD64 Address,DWORD Size,DWORD Flags);
|
---|
1061 | WINBOOL IMAGEAPI SymDeleteSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Flags);
|
---|
1062 | WINBOOL IMAGEAPI SymDeleteSymbolW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Name,DWORD64 Address,DWORD Flags);
|
---|
1063 |
|
---|
1064 | typedef WINBOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(DWORD DataType,PVOID *Data,LPDWORD DataLength,PVOID UserData);
|
---|
1065 |
|
---|
1066 | WINBOOL WINAPI DbgHelpCreateUserDump(LPCSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
|
---|
1067 | WINBOOL WINAPI DbgHelpCreateUserDumpW(LPCWSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
|
---|
1068 | WINBOOL IMAGEAPI SymGetSymFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD64 pdwDisplacement,PIMAGEHLP_SYMBOL64 Symbol);
|
---|
1069 |
|
---|
1070 | #ifdef _IMAGEHLP64
|
---|
1071 | #define SymGetSymFromAddr SymGetSymFromAddr64
|
---|
1072 | #else
|
---|
1073 | WINBOOL IMAGEAPI SymGetSymFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_SYMBOL Symbol);
|
---|
1074 | #endif
|
---|
1075 |
|
---|
1076 | WINBOOL IMAGEAPI SymGetSymFromName64(HANDLE hProcess,PCSTR Name,PIMAGEHLP_SYMBOL64 Symbol);
|
---|
1077 |
|
---|
1078 | #ifdef _IMAGEHLP64
|
---|
1079 | #define SymGetSymFromName SymGetSymFromName64
|
---|
1080 | #else
|
---|
1081 | WINBOOL IMAGEAPI SymGetSymFromName(HANDLE hProcess,PCSTR Name,PIMAGEHLP_SYMBOL Symbol);
|
---|
1082 | #endif
|
---|
1083 |
|
---|
1084 | DBHLP_DEPRECIATED WINBOOL IMAGEAPI FindFileInPath(HANDLE hprocess,PCSTR SearchPath,PCSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,PSTR FilePath);
|
---|
1085 | DBHLP_DEPRECIATED WINBOOL IMAGEAPI FindFileInSearchPath(HANDLE hprocess,PCSTR SearchPath,PCSTR FileName,DWORD one,DWORD two,DWORD three,PSTR FilePath);
|
---|
1086 | DBHLP_DEPRECIATED WINBOOL IMAGEAPI SymEnumSym(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
|
---|
1087 |
|
---|
1088 | #ifdef __cplusplus
|
---|
1089 | }
|
---|
1090 | #endif
|
---|
1091 |
|
---|
1092 | #define SYMF_OMAP_GENERATED 0x00000001
|
---|
1093 | #define SYMF_OMAP_MODIFIED 0x00000002
|
---|
1094 | #define SYMF_REGISTER 0x00000008
|
---|
1095 | #define SYMF_REGREL 0x00000010
|
---|
1096 | #define SYMF_FRAMEREL 0x00000020
|
---|
1097 | #define SYMF_PARAMETER 0x00000040
|
---|
1098 | #define SYMF_LOCAL 0x00000080
|
---|
1099 | #define SYMF_CONSTANT 0x00000100
|
---|
1100 | #define SYMF_EXPORT 0x00000200
|
---|
1101 | #define SYMF_FORWARDER 0x00000400
|
---|
1102 | #define SYMF_FUNCTION 0x00000800
|
---|
1103 | #define SYMF_VIRTUAL 0x00001000
|
---|
1104 | #define SYMF_THUNK 0x00002000
|
---|
1105 | #define SYMF_TLSREL 0x00004000
|
---|
1106 |
|
---|
1107 | #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
|
---|
1108 | #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER
|
---|
1109 | #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL
|
---|
1110 | #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL
|
---|
1111 | #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER
|
---|
1112 | #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL
|
---|
1113 | #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT
|
---|
1114 | #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION
|
---|
1115 | #define IMAGEHLP_SYMBOL_VIRTUAL SYMF_VIRTUAL
|
---|
1116 | #define IMAGEHLP_SYMBOL_THUNK SYMF_THUNK
|
---|
1117 | #define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE SYMF_TLSREL
|
---|
1118 |
|
---|
1119 | #include <pshpack4.h>
|
---|
1120 |
|
---|
1121 | #define MINIDUMP_SIGNATURE ('PMDM')
|
---|
1122 | #define MINIDUMP_VERSION (42899)
|
---|
1123 | typedef DWORD RVA;
|
---|
1124 | typedef ULONG64 RVA64;
|
---|
1125 |
|
---|
1126 | typedef struct _MINIDUMP_LOCATION_DESCRIPTOR {
|
---|
1127 | ULONG32 DataSize;
|
---|
1128 | RVA Rva;
|
---|
1129 | } MINIDUMP_LOCATION_DESCRIPTOR;
|
---|
1130 |
|
---|
1131 | typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 {
|
---|
1132 | ULONG64 DataSize;
|
---|
1133 | RVA64 Rva;
|
---|
1134 | } MINIDUMP_LOCATION_DESCRIPTOR64;
|
---|
1135 |
|
---|
1136 | typedef struct _MINIDUMP_MEMORY_DESCRIPTOR {
|
---|
1137 | ULONG64 StartOfMemoryRange;
|
---|
1138 | MINIDUMP_LOCATION_DESCRIPTOR Memory;
|
---|
1139 | } MINIDUMP_MEMORY_DESCRIPTOR,*PMINIDUMP_MEMORY_DESCRIPTOR;
|
---|
1140 |
|
---|
1141 | typedef struct _MINIDUMP_MEMORY_DESCRIPTOR64 {
|
---|
1142 | ULONG64 StartOfMemoryRange;
|
---|
1143 | ULONG64 DataSize;
|
---|
1144 | } MINIDUMP_MEMORY_DESCRIPTOR64,*PMINIDUMP_MEMORY_DESCRIPTOR64;
|
---|
1145 |
|
---|
1146 | typedef struct _MINIDUMP_HEADER {
|
---|
1147 | ULONG32 Signature;
|
---|
1148 | ULONG32 Version;
|
---|
1149 | ULONG32 NumberOfStreams;
|
---|
1150 | RVA StreamDirectoryRva;
|
---|
1151 | ULONG32 CheckSum;
|
---|
1152 | __C89_NAMELESS union {
|
---|
1153 | ULONG32 Reserved;
|
---|
1154 | ULONG32 TimeDateStamp;
|
---|
1155 | };
|
---|
1156 | ULONG64 Flags;
|
---|
1157 | } MINIDUMP_HEADER,*PMINIDUMP_HEADER;
|
---|
1158 |
|
---|
1159 | typedef struct _MINIDUMP_DIRECTORY {
|
---|
1160 | ULONG32 StreamType;
|
---|
1161 | MINIDUMP_LOCATION_DESCRIPTOR Location;
|
---|
1162 | } MINIDUMP_DIRECTORY,*PMINIDUMP_DIRECTORY;
|
---|
1163 |
|
---|
1164 | typedef struct _MINIDUMP_STRING {
|
---|
1165 | ULONG32 Length;
|
---|
1166 | WCHAR Buffer[0];
|
---|
1167 | } MINIDUMP_STRING,*PMINIDUMP_STRING;
|
---|
1168 |
|
---|
1169 | typedef enum _MINIDUMP_STREAM_TYPE {
|
---|
1170 | UnusedStream = 0,
|
---|
1171 | ReservedStream0 = 1,
|
---|
1172 | ReservedStream1 = 2,
|
---|
1173 | ThreadListStream = 3,
|
---|
1174 | ModuleListStream = 4,
|
---|
1175 | MemoryListStream = 5,
|
---|
1176 | ExceptionStream = 6,
|
---|
1177 | SystemInfoStream = 7,
|
---|
1178 | ThreadExListStream = 8,
|
---|
1179 | Memory64ListStream = 9,
|
---|
1180 | CommentStreamA = 10,
|
---|
1181 | CommentStreamW = 11,
|
---|
1182 | HandleDataStream = 12,
|
---|
1183 | FunctionTableStream = 13,
|
---|
1184 | UnloadedModuleListStream = 14,
|
---|
1185 | MiscInfoStream = 15,
|
---|
1186 | MemoryInfoListStream = 16,
|
---|
1187 | ThreadInfoListStream = 17,
|
---|
1188 | HandleOperationListStream = 18,
|
---|
1189 | TokenStream = 19,
|
---|
1190 | JavaScriptDataStream = 20,
|
---|
1191 | SystemMemoryInfoStream = 21,
|
---|
1192 | ProcessVmCountersStream = 22,
|
---|
1193 | IptTraceStream = 23,
|
---|
1194 | ThreadNamesStream = 24,
|
---|
1195 | ceStreamNull = 0x8000,
|
---|
1196 | ceStreamSystemInfo = 0x8001,
|
---|
1197 | ceStreamException = 0x8002,
|
---|
1198 | ceStreamModuleList = 0x8003,
|
---|
1199 | ceStreamProcessList = 0x8004,
|
---|
1200 | ceStreamThreadList = 0x8005,
|
---|
1201 | ceStreamThreadContextList = 0x8006,
|
---|
1202 | ceStreamThreadCallStackList = 0x8007,
|
---|
1203 | ceStreamMemoryVirtualList = 0x8008,
|
---|
1204 | ceStreamMemoryPhysicalList = 0x8009,
|
---|
1205 | ceStreamBucketParameters = 0x800a,
|
---|
1206 | ceStreamProcessModuleMap = 0x800b,
|
---|
1207 | ceStreamDiagnosisList = 0x800c,
|
---|
1208 | LastReservedStream = 0xffff
|
---|
1209 | } MINIDUMP_STREAM_TYPE;
|
---|
1210 |
|
---|
1211 | typedef union _CPU_INFORMATION {
|
---|
1212 | struct {
|
---|
1213 | ULONG32 VendorId[3];
|
---|
1214 | ULONG32 VersionInformation;
|
---|
1215 | ULONG32 FeatureInformation;
|
---|
1216 | ULONG32 AMDExtendedCpuFeatures;
|
---|
1217 | } X86CpuInfo;
|
---|
1218 | struct {
|
---|
1219 | ULONG64 ProcessorFeatures[2];
|
---|
1220 | } OtherCpuInfo;
|
---|
1221 | } CPU_INFORMATION,*PCPU_INFORMATION;
|
---|
1222 |
|
---|
1223 | typedef struct _MINIDUMP_SYSTEM_INFO {
|
---|
1224 | USHORT ProcessorArchitecture;
|
---|
1225 | USHORT ProcessorLevel;
|
---|
1226 | USHORT ProcessorRevision;
|
---|
1227 | __C89_NAMELESS union {
|
---|
1228 | USHORT Reserved0;
|
---|
1229 | __C89_NAMELESS struct {
|
---|
1230 | UCHAR NumberOfProcessors;
|
---|
1231 | UCHAR ProductType;
|
---|
1232 | };
|
---|
1233 | };
|
---|
1234 | ULONG32 MajorVersion;
|
---|
1235 | ULONG32 MinorVersion;
|
---|
1236 | ULONG32 BuildNumber;
|
---|
1237 | ULONG32 PlatformId;
|
---|
1238 | RVA CSDVersionRva;
|
---|
1239 | __C89_NAMELESS union {
|
---|
1240 | ULONG32 Reserved1;
|
---|
1241 | __C89_NAMELESS struct {
|
---|
1242 | USHORT SuiteMask;
|
---|
1243 | USHORT Reserved2;
|
---|
1244 | };
|
---|
1245 | };
|
---|
1246 | CPU_INFORMATION Cpu;
|
---|
1247 | } MINIDUMP_SYSTEM_INFO,*PMINIDUMP_SYSTEM_INFO;
|
---|
1248 |
|
---|
1249 | C_ASSERT(sizeof(((PPROCESS_INFORMATION)0)->dwThreadId)==4);
|
---|
1250 |
|
---|
1251 | typedef struct _MINIDUMP_THREAD {
|
---|
1252 | ULONG32 ThreadId;
|
---|
1253 | ULONG32 SuspendCount;
|
---|
1254 | ULONG32 PriorityClass;
|
---|
1255 | ULONG32 Priority;
|
---|
1256 | ULONG64 Teb;
|
---|
1257 | MINIDUMP_MEMORY_DESCRIPTOR Stack;
|
---|
1258 | MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
|
---|
1259 | } MINIDUMP_THREAD,*PMINIDUMP_THREAD;
|
---|
1260 |
|
---|
1261 | typedef struct _MINIDUMP_THREAD_LIST {
|
---|
1262 | ULONG32 NumberOfThreads;
|
---|
1263 | MINIDUMP_THREAD Threads[0];
|
---|
1264 | } MINIDUMP_THREAD_LIST,*PMINIDUMP_THREAD_LIST;
|
---|
1265 |
|
---|
1266 | typedef struct _MINIDUMP_THREAD_EX {
|
---|
1267 | ULONG32 ThreadId;
|
---|
1268 | ULONG32 SuspendCount;
|
---|
1269 | ULONG32 PriorityClass;
|
---|
1270 | ULONG32 Priority;
|
---|
1271 | ULONG64 Teb;
|
---|
1272 | MINIDUMP_MEMORY_DESCRIPTOR Stack;
|
---|
1273 | MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
|
---|
1274 | MINIDUMP_MEMORY_DESCRIPTOR BackingStore;
|
---|
1275 | } MINIDUMP_THREAD_EX,*PMINIDUMP_THREAD_EX;
|
---|
1276 |
|
---|
1277 | typedef struct _MINIDUMP_THREAD_EX_LIST {
|
---|
1278 | ULONG32 NumberOfThreads;
|
---|
1279 | MINIDUMP_THREAD_EX Threads[0];
|
---|
1280 | } MINIDUMP_THREAD_EX_LIST,*PMINIDUMP_THREAD_EX_LIST;
|
---|
1281 |
|
---|
1282 | typedef struct _MINIDUMP_EXCEPTION {
|
---|
1283 | ULONG32 ExceptionCode;
|
---|
1284 | ULONG32 ExceptionFlags;
|
---|
1285 | ULONG64 ExceptionRecord;
|
---|
1286 | ULONG64 ExceptionAddress;
|
---|
1287 | ULONG32 NumberParameters;
|
---|
1288 | ULONG32 __unusedAlignment;
|
---|
1289 | ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
|
---|
1290 | } MINIDUMP_EXCEPTION,*PMINIDUMP_EXCEPTION;
|
---|
1291 |
|
---|
1292 | typedef struct MINIDUMP_EXCEPTION_STREAM {
|
---|
1293 | ULONG32 ThreadId;
|
---|
1294 | ULONG32 __alignment;
|
---|
1295 | MINIDUMP_EXCEPTION ExceptionRecord;
|
---|
1296 | MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
|
---|
1297 | } MINIDUMP_EXCEPTION_STREAM,*PMINIDUMP_EXCEPTION_STREAM;
|
---|
1298 |
|
---|
1299 | typedef struct _MINIDUMP_MODULE {
|
---|
1300 | ULONG64 BaseOfImage;
|
---|
1301 | ULONG32 SizeOfImage;
|
---|
1302 | ULONG32 CheckSum;
|
---|
1303 | ULONG32 TimeDateStamp;
|
---|
1304 | RVA ModuleNameRva;
|
---|
1305 | VS_FIXEDFILEINFO VersionInfo;
|
---|
1306 | MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
|
---|
1307 | MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
|
---|
1308 | ULONG64 Reserved0;
|
---|
1309 | ULONG64 Reserved1;
|
---|
1310 | } MINIDUMP_MODULE,*PMINIDUMP_MODULE;
|
---|
1311 |
|
---|
1312 | typedef struct _MINIDUMP_MODULE_LIST {
|
---|
1313 | ULONG32 NumberOfModules;
|
---|
1314 | MINIDUMP_MODULE Modules[0];
|
---|
1315 | } MINIDUMP_MODULE_LIST,*PMINIDUMP_MODULE_LIST;
|
---|
1316 |
|
---|
1317 | typedef struct _MINIDUMP_MEMORY_LIST {
|
---|
1318 | ULONG32 NumberOfMemoryRanges;
|
---|
1319 | MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges[0];
|
---|
1320 | } MINIDUMP_MEMORY_LIST,*PMINIDUMP_MEMORY_LIST;
|
---|
1321 |
|
---|
1322 | typedef struct _MINIDUMP_MEMORY64_LIST {
|
---|
1323 | ULONG64 NumberOfMemoryRanges;
|
---|
1324 | RVA64 BaseRva;
|
---|
1325 | MINIDUMP_MEMORY_DESCRIPTOR64 MemoryRanges[0];
|
---|
1326 | } MINIDUMP_MEMORY64_LIST,*PMINIDUMP_MEMORY64_LIST;
|
---|
1327 |
|
---|
1328 | typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
|
---|
1329 | DWORD ThreadId;
|
---|
1330 | PEXCEPTION_POINTERS ExceptionPointers;
|
---|
1331 | WINBOOL ClientPointers;
|
---|
1332 | } MINIDUMP_EXCEPTION_INFORMATION,*PMINIDUMP_EXCEPTION_INFORMATION;
|
---|
1333 |
|
---|
1334 | typedef struct _MINIDUMP_EXCEPTION_INFORMATION64 {
|
---|
1335 | DWORD ThreadId;
|
---|
1336 | ULONG64 ExceptionRecord;
|
---|
1337 | ULONG64 ContextRecord;
|
---|
1338 | WINBOOL ClientPointers;
|
---|
1339 | } MINIDUMP_EXCEPTION_INFORMATION64,*PMINIDUMP_EXCEPTION_INFORMATION64;
|
---|
1340 |
|
---|
1341 | typedef enum _MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE {
|
---|
1342 | MiniHandleObjectInformationNone,
|
---|
1343 | MiniThreadInformation1,
|
---|
1344 | MiniMutantInformation1,
|
---|
1345 | MiniMutantInformation2,
|
---|
1346 | MiniProcessInformation1,
|
---|
1347 | MiniProcessInformation2,
|
---|
1348 | MiniEventInformation1,
|
---|
1349 | MiniSectionInformation1,
|
---|
1350 | MiniSemaphoreInformation1,
|
---|
1351 | MiniHandleObjectInformationTypeMax
|
---|
1352 | } MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE;
|
---|
1353 |
|
---|
1354 | typedef struct _MINIDUMP_HANDLE_OBJECT_INFORMATION {
|
---|
1355 | RVA NextInfoRva;
|
---|
1356 | ULONG32 InfoType;
|
---|
1357 | ULONG32 SizeOfInfo;
|
---|
1358 | } MINIDUMP_HANDLE_OBJECT_INFORMATION;
|
---|
1359 |
|
---|
1360 | typedef struct _MINIDUMP_HANDLE_DESCRIPTOR {
|
---|
1361 | ULONG64 Handle;
|
---|
1362 | RVA TypeNameRva;
|
---|
1363 | RVA ObjectNameRva;
|
---|
1364 | ULONG32 Attributes;
|
---|
1365 | ULONG32 GrantedAccess;
|
---|
1366 | ULONG32 HandleCount;
|
---|
1367 | ULONG32 PointerCount;
|
---|
1368 | } MINIDUMP_HANDLE_DESCRIPTOR,*PMINIDUMP_HANDLE_DESCRIPTOR;
|
---|
1369 |
|
---|
1370 | typedef struct _MINIDUMP_HANDLE_DATA_STREAM {
|
---|
1371 | ULONG32 SizeOfHeader;
|
---|
1372 | ULONG32 SizeOfDescriptor;
|
---|
1373 | ULONG32 NumberOfDescriptors;
|
---|
1374 | ULONG32 Reserved;
|
---|
1375 | } MINIDUMP_HANDLE_DATA_STREAM,*PMINIDUMP_HANDLE_DATA_STREAM;
|
---|
1376 |
|
---|
1377 | typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR {
|
---|
1378 | ULONG64 MinimumAddress;
|
---|
1379 | ULONG64 MaximumAddress;
|
---|
1380 | ULONG64 BaseAddress;
|
---|
1381 | ULONG32 EntryCount;
|
---|
1382 | ULONG32 SizeOfAlignPad;
|
---|
1383 | } MINIDUMP_FUNCTION_TABLE_DESCRIPTOR,*PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
|
---|
1384 |
|
---|
1385 | typedef struct _MINIDUMP_FUNCTION_TABLE_STREAM {
|
---|
1386 | ULONG32 SizeOfHeader;
|
---|
1387 | ULONG32 SizeOfDescriptor;
|
---|
1388 | ULONG32 SizeOfNativeDescriptor;
|
---|
1389 | ULONG32 SizeOfFunctionEntry;
|
---|
1390 | ULONG32 NumberOfDescriptors;
|
---|
1391 | ULONG32 SizeOfAlignPad;
|
---|
1392 | } MINIDUMP_FUNCTION_TABLE_STREAM,*PMINIDUMP_FUNCTION_TABLE_STREAM;
|
---|
1393 |
|
---|
1394 | typedef struct _MINIDUMP_UNLOADED_MODULE {
|
---|
1395 | ULONG64 BaseOfImage;
|
---|
1396 | ULONG32 SizeOfImage;
|
---|
1397 | ULONG32 CheckSum;
|
---|
1398 | ULONG32 TimeDateStamp;
|
---|
1399 | RVA ModuleNameRva;
|
---|
1400 | } MINIDUMP_UNLOADED_MODULE,*PMINIDUMP_UNLOADED_MODULE;
|
---|
1401 |
|
---|
1402 | typedef struct _MINIDUMP_UNLOADED_MODULE_LIST {
|
---|
1403 | ULONG32 SizeOfHeader;
|
---|
1404 | ULONG32 SizeOfEntry;
|
---|
1405 | ULONG32 NumberOfEntries;
|
---|
1406 | } MINIDUMP_UNLOADED_MODULE_LIST,*PMINIDUMP_UNLOADED_MODULE_LIST;
|
---|
1407 |
|
---|
1408 | #define MINIDUMP_MISC1_PROCESS_ID 0x00000001
|
---|
1409 | #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002
|
---|
1410 | #define MINIDUMP_MISC1_PROCESSOR_POWER_INFO 0x00000004
|
---|
1411 |
|
---|
1412 | typedef struct _MINIDUMP_MISC_INFO {
|
---|
1413 | ULONG32 SizeOfInfo;
|
---|
1414 | ULONG32 Flags1;
|
---|
1415 | ULONG32 ProcessId;
|
---|
1416 | ULONG32 ProcessCreateTime;
|
---|
1417 | ULONG32 ProcessUserTime;
|
---|
1418 | ULONG32 ProcessKernelTime;
|
---|
1419 | } MINIDUMP_MISC_INFO,*PMINIDUMP_MISC_INFO;
|
---|
1420 |
|
---|
1421 | typedef struct _MINIDUMP_USER_RECORD {
|
---|
1422 | ULONG32 Type;
|
---|
1423 | MINIDUMP_LOCATION_DESCRIPTOR Memory;
|
---|
1424 | } MINIDUMP_USER_RECORD,*PMINIDUMP_USER_RECORD;
|
---|
1425 |
|
---|
1426 | typedef struct _MINIDUMP_USER_STREAM {
|
---|
1427 | ULONG32 Type;
|
---|
1428 | ULONG BufferSize;
|
---|
1429 | PVOID Buffer;
|
---|
1430 | } MINIDUMP_USER_STREAM,*PMINIDUMP_USER_STREAM;
|
---|
1431 |
|
---|
1432 | typedef struct _MINIDUMP_USER_STREAM_INFORMATION {
|
---|
1433 | ULONG UserStreamCount;
|
---|
1434 | PMINIDUMP_USER_STREAM UserStreamArray;
|
---|
1435 | } MINIDUMP_USER_STREAM_INFORMATION,*PMINIDUMP_USER_STREAM_INFORMATION;
|
---|
1436 |
|
---|
1437 | typedef enum _MINIDUMP_CALLBACK_TYPE {
|
---|
1438 | ModuleCallback,
|
---|
1439 | ThreadCallback,
|
---|
1440 | ThreadExCallback,
|
---|
1441 | IncludeThreadCallback,
|
---|
1442 | IncludeModuleCallback,
|
---|
1443 | MemoryCallback,
|
---|
1444 | CancelCallback,
|
---|
1445 | WriteKernelMinidumpCallback,
|
---|
1446 | KernelMinidumpStatusCallback,
|
---|
1447 | RemoveMemoryCallback,
|
---|
1448 | IncludeVmRegionCallback,
|
---|
1449 | IoStartCallback,
|
---|
1450 | IoWriteAllCallback,
|
---|
1451 | IoFinishCallback,
|
---|
1452 | ReadMemoryFailureCallback,
|
---|
1453 | SecondaryFlagsCallback,
|
---|
1454 | IsProcessSnapshotCallback,
|
---|
1455 | VmStartCallback,
|
---|
1456 | VmQueryCallback,
|
---|
1457 | VmPreReadCallback,
|
---|
1458 | VmPostReadCallback
|
---|
1459 | } MINIDUMP_CALLBACK_TYPE;
|
---|
1460 |
|
---|
1461 | typedef struct _MINIDUMP_THREAD_CALLBACK {
|
---|
1462 | ULONG ThreadId;
|
---|
1463 | HANDLE ThreadHandle;
|
---|
1464 | #if defined(__aarch64__)
|
---|
1465 | ULONG Pad;
|
---|
1466 | #endif
|
---|
1467 | CONTEXT Context;
|
---|
1468 | ULONG SizeOfContext;
|
---|
1469 | ULONG64 StackBase;
|
---|
1470 | ULONG64 StackEnd;
|
---|
1471 | } MINIDUMP_THREAD_CALLBACK,*PMINIDUMP_THREAD_CALLBACK;
|
---|
1472 |
|
---|
1473 | typedef struct _MINIDUMP_THREAD_EX_CALLBACK {
|
---|
1474 | ULONG ThreadId;
|
---|
1475 | HANDLE ThreadHandle;
|
---|
1476 | #if defined(__aarch64__)
|
---|
1477 | ULONG Pad;
|
---|
1478 | #endif
|
---|
1479 | CONTEXT Context;
|
---|
1480 | ULONG SizeOfContext;
|
---|
1481 | ULONG64 StackBase;
|
---|
1482 | ULONG64 StackEnd;
|
---|
1483 | ULONG64 BackingStoreBase;
|
---|
1484 | ULONG64 BackingStoreEnd;
|
---|
1485 | } MINIDUMP_THREAD_EX_CALLBACK,*PMINIDUMP_THREAD_EX_CALLBACK;
|
---|
1486 |
|
---|
1487 | typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK {
|
---|
1488 | ULONG ThreadId;
|
---|
1489 | } MINIDUMP_INCLUDE_THREAD_CALLBACK,*PMINIDUMP_INCLUDE_THREAD_CALLBACK;
|
---|
1490 |
|
---|
1491 | typedef enum _THREAD_WRITE_FLAGS {
|
---|
1492 | ThreadWriteThread = 0x0001,
|
---|
1493 | ThreadWriteStack = 0x0002,
|
---|
1494 | ThreadWriteContext = 0x0004,
|
---|
1495 | ThreadWriteBackingStore = 0x0008,
|
---|
1496 | ThreadWriteInstructionWindow = 0x0010,
|
---|
1497 | ThreadWriteThreadData = 0x0020,
|
---|
1498 | ThreadWriteThreadInfo = 0x0040
|
---|
1499 | } THREAD_WRITE_FLAGS;
|
---|
1500 |
|
---|
1501 | typedef struct _MINIDUMP_MODULE_CALLBACK {
|
---|
1502 | PWCHAR FullPath;
|
---|
1503 | ULONG64 BaseOfImage;
|
---|
1504 | ULONG SizeOfImage;
|
---|
1505 | ULONG CheckSum;
|
---|
1506 | ULONG TimeDateStamp;
|
---|
1507 | VS_FIXEDFILEINFO VersionInfo;
|
---|
1508 | PVOID CvRecord;
|
---|
1509 | ULONG SizeOfCvRecord;
|
---|
1510 | PVOID MiscRecord;
|
---|
1511 | ULONG SizeOfMiscRecord;
|
---|
1512 | } MINIDUMP_MODULE_CALLBACK,*PMINIDUMP_MODULE_CALLBACK;
|
---|
1513 |
|
---|
1514 | typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK {
|
---|
1515 | ULONG64 BaseOfImage;
|
---|
1516 | } MINIDUMP_INCLUDE_MODULE_CALLBACK,*PMINIDUMP_INCLUDE_MODULE_CALLBACK;
|
---|
1517 |
|
---|
1518 | typedef enum _MODULE_WRITE_FLAGS {
|
---|
1519 | ModuleWriteModule = 0x0001,
|
---|
1520 | ModuleWriteDataSeg = 0x0002,
|
---|
1521 | ModuleWriteMiscRecord = 0x0004,
|
---|
1522 | ModuleWriteCvRecord = 0x0008,
|
---|
1523 | ModuleReferencedByMemory = 0x0010,
|
---|
1524 | ModuleWriteTlsData = 0x0020,
|
---|
1525 | ModuleWriteCodeSegs = 0x0040
|
---|
1526 | } MODULE_WRITE_FLAGS;
|
---|
1527 |
|
---|
1528 | typedef enum _MINIDUMP_SECONDARY_FLAGS {
|
---|
1529 | MiniSecondaryWithoutPowerInfo = 0x00000001
|
---|
1530 | } MINIDUMP_SECONDARY_FLAGS;
|
---|
1531 |
|
---|
1532 | typedef struct _MINIDUMP_CALLBACK_INPUT {
|
---|
1533 | ULONG ProcessId;
|
---|
1534 | HANDLE ProcessHandle;
|
---|
1535 | ULONG CallbackType;
|
---|
1536 | __C89_NAMELESS union {
|
---|
1537 | MINIDUMP_THREAD_CALLBACK Thread;
|
---|
1538 | MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
|
---|
1539 | MINIDUMP_MODULE_CALLBACK Module;
|
---|
1540 | MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
|
---|
1541 | MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
|
---|
1542 | };
|
---|
1543 | } MINIDUMP_CALLBACK_INPUT,*PMINIDUMP_CALLBACK_INPUT;
|
---|
1544 |
|
---|
1545 | typedef struct _MINIDUMP_MEMORY_INFO {
|
---|
1546 | ULONG64 BaseAddress;
|
---|
1547 | ULONG64 AllocationBase;
|
---|
1548 | ULONG32 AllocationProtect;
|
---|
1549 | ULONG32 __alignment1;
|
---|
1550 | ULONG64 RegionSize;
|
---|
1551 | ULONG32 State;
|
---|
1552 | ULONG32 Protect;
|
---|
1553 | ULONG32 Type;
|
---|
1554 | ULONG32 __alignment2;
|
---|
1555 | } MINIDUMP_MEMORY_INFO, *PMINIDUMP_MEMORY_INFO;
|
---|
1556 |
|
---|
1557 | typedef struct _MINIDUMP_MISC_INFO_2 {
|
---|
1558 | ULONG32 SizeOfInfo;
|
---|
1559 | ULONG32 Flags1;
|
---|
1560 | ULONG32 ProcessId;
|
---|
1561 | ULONG32 ProcessCreateTime;
|
---|
1562 | ULONG32 ProcessUserTime;
|
---|
1563 | ULONG32 ProcessKernelTime;
|
---|
1564 | ULONG32 ProcessorMaxMhz;
|
---|
1565 | ULONG32 ProcessorCurrentMhz;
|
---|
1566 | ULONG32 ProcessorMhzLimit;
|
---|
1567 | ULONG32 ProcessorMaxIdleState;
|
---|
1568 | ULONG32 ProcessorCurrentIdleState;
|
---|
1569 | } MINIDUMP_MISC_INFO_2, *PMINIDUMP_MISC_INFO_2;
|
---|
1570 |
|
---|
1571 | typedef struct _MINIDUMP_MEMORY_INFO_LIST {
|
---|
1572 | ULONG SizeOfHeader;
|
---|
1573 | ULONG SizeOfEntry;
|
---|
1574 | ULONG64 NumberOfEntries;
|
---|
1575 | } MINIDUMP_MEMORY_INFO_LIST, *PMINIDUMP_MEMORY_INFO_LIST;
|
---|
1576 |
|
---|
1577 | typedef struct _MINIDUMP_CALLBACK_OUTPUT {
|
---|
1578 | __C89_NAMELESS union {
|
---|
1579 | ULONG ModuleWriteFlags;
|
---|
1580 | ULONG ThreadWriteFlags;
|
---|
1581 | ULONG SecondaryFlags;
|
---|
1582 | __C89_NAMELESS struct {
|
---|
1583 | ULONG64 MemoryBase;
|
---|
1584 | ULONG MemorySize;
|
---|
1585 | };
|
---|
1586 | __C89_NAMELESS struct {
|
---|
1587 | WINBOOL CheckCancel;
|
---|
1588 | WINBOOL Cancel;
|
---|
1589 | };
|
---|
1590 | HANDLE Handle;
|
---|
1591 | };
|
---|
1592 | __C89_NAMELESS struct {
|
---|
1593 | MINIDUMP_MEMORY_INFO VmRegion;
|
---|
1594 | WINBOOL Continue;
|
---|
1595 | };
|
---|
1596 | HRESULT Status;
|
---|
1597 | } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
|
---|
1598 |
|
---|
1599 | typedef enum _MINIDUMP_TYPE {
|
---|
1600 | MiniDumpNormal = 0x00000000,
|
---|
1601 | MiniDumpWithDataSegs = 0x00000001,
|
---|
1602 | MiniDumpWithFullMemory = 0x00000002,
|
---|
1603 | MiniDumpWithHandleData = 0x00000004,
|
---|
1604 | MiniDumpFilterMemory = 0x00000008,
|
---|
1605 | MiniDumpScanMemory = 0x00000010,
|
---|
1606 | MiniDumpWithUnloadedModules = 0x00000020,
|
---|
1607 | MiniDumpWithIndirectlyReferencedMemory = 0x00000040,
|
---|
1608 | MiniDumpFilterModulePaths = 0x00000080,
|
---|
1609 | MiniDumpWithProcessThreadData = 0x00000100,
|
---|
1610 | MiniDumpWithPrivateReadWriteMemory = 0x00000200,
|
---|
1611 | MiniDumpWithoutOptionalData = 0x00000400,
|
---|
1612 | MiniDumpWithFullMemoryInfo = 0x00000800,
|
---|
1613 | MiniDumpWithThreadInfo = 0x00001000,
|
---|
1614 | MiniDumpWithCodeSegs = 0x00002000,
|
---|
1615 | MiniDumpWithoutAuxiliaryState = 0x00004000,
|
---|
1616 | MiniDumpWithFullAuxiliaryState = 0x00008000,
|
---|
1617 | MiniDumpWithPrivateWriteCopyMemory = 0x00010000,
|
---|
1618 | MiniDumpIgnoreInaccessibleMemory = 0x00020000,
|
---|
1619 | MiniDumpWithTokenInformation = 0x00040000,
|
---|
1620 | MiniDumpWithModuleHeaders = 0x00080000,
|
---|
1621 | MiniDumpFilterTriage = 0x00100000,
|
---|
1622 | MiniDumpWithAvxXStateContext = 0x00200000,
|
---|
1623 | MiniDumpWithIptTrace = 0x00400000,
|
---|
1624 | MiniDumpScanInaccessiblePartialPages = 0x00800000,
|
---|
1625 | MiniDumpValidTypeFlags = 0x00ffffff
|
---|
1626 | } MINIDUMP_TYPE;
|
---|
1627 |
|
---|
1628 | #define MINIDUMP_THREAD_INFO_ERROR_THREAD 0x00000001
|
---|
1629 | #define MINIDUMP_THREAD_INFO_WRITING_THREAD 0x00000002
|
---|
1630 | #define MINIDUMP_THREAD_INFO_EXITED_THREAD 0x00000004
|
---|
1631 | #define MINIDUMP_THREAD_INFO_INVALID_INFO 0x00000008
|
---|
1632 | #define MINIDUMP_THREAD_INFO_INVALID_CONTEXT 0x00000010
|
---|
1633 | #define MINIDUMP_THREAD_INFO_INVALID_TEB 0x00000020
|
---|
1634 |
|
---|
1635 | typedef struct _MINIDUMP_THREAD_INFO {
|
---|
1636 | ULONG32 ThreadId;
|
---|
1637 | ULONG32 DumpFlags;
|
---|
1638 | ULONG32 DumpError;
|
---|
1639 | ULONG32 ExitStatus;
|
---|
1640 | ULONG64 CreateTime;
|
---|
1641 | ULONG64 ExitTime;
|
---|
1642 | ULONG64 KernelTime;
|
---|
1643 | ULONG64 UserTime;
|
---|
1644 | ULONG64 StartAddress;
|
---|
1645 | ULONG64 Affinity;
|
---|
1646 | } MINIDUMP_THREAD_INFO, *PMINIDUMP_THREAD_INFO;
|
---|
1647 |
|
---|
1648 | typedef struct _MINIDUMP_THREAD_INFO_LIST {
|
---|
1649 | ULONG SizeOfHeader;
|
---|
1650 | ULONG SizeOfEntry;
|
---|
1651 | ULONG NumberOfEntries;
|
---|
1652 | } MINIDUMP_THREAD_INFO_LIST, *PMINIDUMP_THREAD_INFO_LIST;
|
---|
1653 |
|
---|
1654 | typedef struct _MINIDUMP_HANDLE_OPERATION_LIST {
|
---|
1655 | ULONG32 SizeOfHeader;
|
---|
1656 | ULONG32 SizeOfEntry;
|
---|
1657 | ULONG32 NumberOfEntries;
|
---|
1658 | ULONG32 Reserved;
|
---|
1659 | } MINIDUMP_HANDLE_OPERATION_LIST, *PMINIDUMP_HANDLE_OPERATION_LIST;
|
---|
1660 |
|
---|
1661 | #ifdef __cplusplus
|
---|
1662 | extern "C" {
|
---|
1663 | #endif
|
---|
1664 |
|
---|
1665 | typedef WINBOOL (WINAPI *MINIDUMP_CALLBACK_ROUTINE)(PVOID CallbackParam,CONST PMINIDUMP_CALLBACK_INPUT CallbackInput,PMINIDUMP_CALLBACK_OUTPUT CallbackOutput);
|
---|
1666 |
|
---|
1667 | typedef struct _MINIDUMP_CALLBACK_INFORMATION {
|
---|
1668 | MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
|
---|
1669 | PVOID CallbackParam;
|
---|
1670 | } MINIDUMP_CALLBACK_INFORMATION,*PMINIDUMP_CALLBACK_INFORMATION;
|
---|
1671 |
|
---|
1672 | #define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva)))
|
---|
1673 |
|
---|
1674 | WINBOOL WINAPI MiniDumpWriteDump(HANDLE hProcess,DWORD ProcessId,HANDLE hFile,MINIDUMP_TYPE DumpType,CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
|
---|
1675 | WINBOOL WINAPI MiniDumpReadDumpStream(PVOID BaseOfDump,ULONG StreamNumber,PMINIDUMP_DIRECTORY *Dir,PVOID *StreamPointer,ULONG *StreamSize);
|
---|
1676 |
|
---|
1677 | WINBOOL WINAPI EnumerateLoadedModulesEx(
|
---|
1678 | HANDLE hProcess,
|
---|
1679 | PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,
|
---|
1680 | PVOID UserContext
|
---|
1681 | );
|
---|
1682 |
|
---|
1683 | WINBOOL WINAPI EnumerateLoadedModulesExW(
|
---|
1684 | HANDLE hProcess,
|
---|
1685 | PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback,
|
---|
1686 | PVOID UserContext
|
---|
1687 | );
|
---|
1688 |
|
---|
1689 | WINBOOL WINAPI SymAddSourceStream(
|
---|
1690 | HANDLE hProcess,
|
---|
1691 | ULONG64 Base,
|
---|
1692 | PCSTR StreamFile,
|
---|
1693 | PBYTE Buffer,
|
---|
1694 | size_t Size
|
---|
1695 | );
|
---|
1696 |
|
---|
1697 | WINBOOL WINAPI SymAddSourceStreamW(
|
---|
1698 | HANDLE hProcess,
|
---|
1699 | ULONG64 Base,
|
---|
1700 | PCWSTR StreamFile,
|
---|
1701 | PBYTE Buffer,
|
---|
1702 | size_t Size
|
---|
1703 | );
|
---|
1704 |
|
---|
1705 | WINBOOL WINAPI SymEnumSourceLines(
|
---|
1706 | HANDLE hProcess,
|
---|
1707 | ULONG64 Base,
|
---|
1708 | PCSTR Obj,
|
---|
1709 | PCSTR File,
|
---|
1710 | DWORD Line,
|
---|
1711 | DWORD Flags,
|
---|
1712 | PSYM_ENUMLINES_CALLBACK EnumLinesCallback,
|
---|
1713 | PVOID UserContext
|
---|
1714 | );
|
---|
1715 |
|
---|
1716 | WINBOOL WINAPI SymEnumSourceLinesW(
|
---|
1717 | HANDLE hProcess,
|
---|
1718 | ULONG64 Base,
|
---|
1719 | PCWSTR Obj,
|
---|
1720 | PCWSTR File,
|
---|
1721 | DWORD Line,
|
---|
1722 | DWORD Flags,
|
---|
1723 | PSYM_ENUMLINES_CALLBACKW EnumLinesCallback,
|
---|
1724 | PVOID UserContext
|
---|
1725 | );
|
---|
1726 |
|
---|
1727 | WINBOOL WINAPI SymEnumTypesByName(
|
---|
1728 | HANDLE hProcess,
|
---|
1729 | ULONG64 BaseOfDll,
|
---|
1730 | PCSTR mask,
|
---|
1731 | PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
|
---|
1732 | PVOID UserContext
|
---|
1733 | );
|
---|
1734 |
|
---|
1735 | WINBOOL WINAPI SymEnumTypesByNameW(
|
---|
1736 | HANDLE hProcess,
|
---|
1737 | ULONG64 BaseOfDll,
|
---|
1738 | PCSTR mask,
|
---|
1739 | PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
|
---|
1740 | PVOID UserContext
|
---|
1741 | );
|
---|
1742 |
|
---|
1743 | HANDLE WINAPI SymFindDebugInfoFile(
|
---|
1744 | HANDLE hProcess,
|
---|
1745 | PCSTR FileName,
|
---|
1746 | PSTR DebugFilePath,
|
---|
1747 | PFIND_DEBUG_FILE_CALLBACK Callback,
|
---|
1748 | PVOID CallerData
|
---|
1749 | );
|
---|
1750 |
|
---|
1751 | HANDLE WINAPI SymFindDebugInfoFileW(
|
---|
1752 | HANDLE hProcess,
|
---|
1753 | PCWSTR FileName,
|
---|
1754 | PWSTR DebugFilePath,
|
---|
1755 | PFIND_DEBUG_FILE_CALLBACKW Callback,
|
---|
1756 | PVOID CallerData
|
---|
1757 | );
|
---|
1758 |
|
---|
1759 | HANDLE WINAPI SymFindExecutableImage(
|
---|
1760 | HANDLE hProcess,
|
---|
1761 | PCSTR FileName,
|
---|
1762 | PSTR ImageFilePath,
|
---|
1763 | PFIND_EXE_FILE_CALLBACK Callback,
|
---|
1764 | PVOID CallerData
|
---|
1765 | );
|
---|
1766 |
|
---|
1767 | HANDLE WINAPI SymFindExecutableImageW(
|
---|
1768 | HANDLE hProcess,
|
---|
1769 | PCWSTR FileName,
|
---|
1770 | PWSTR ImageFilePath,
|
---|
1771 | PFIND_EXE_FILE_CALLBACKW Callback,
|
---|
1772 | PVOID CallerData
|
---|
1773 | );
|
---|
1774 |
|
---|
1775 | WINBOOL WINAPI SymFromIndex(
|
---|
1776 | HANDLE hProcess,
|
---|
1777 | ULONG64 BaseOfDll,
|
---|
1778 | DWORD Index,
|
---|
1779 | PSYMBOL_INFO Symbol
|
---|
1780 | );
|
---|
1781 |
|
---|
1782 | WINBOOL WINAPI SymFromIndexW(
|
---|
1783 | HANDLE hProcess,
|
---|
1784 | ULONG64 BaseOfDll,
|
---|
1785 | DWORD Index,
|
---|
1786 | PSYMBOL_INFOW Symbol
|
---|
1787 | );
|
---|
1788 |
|
---|
1789 | WINBOOL WINAPI SymGetScope(
|
---|
1790 | HANDLE hProcess,
|
---|
1791 | ULONG64 BaseOfDll,
|
---|
1792 | DWORD Index,
|
---|
1793 | PSYMBOL_INFO Symbol
|
---|
1794 | );
|
---|
1795 |
|
---|
1796 | WINBOOL WINAPI SymGetScopeW(
|
---|
1797 | HANDLE hProcess,
|
---|
1798 | ULONG64 BaseOfDll,
|
---|
1799 | DWORD Index,
|
---|
1800 | PSYMBOL_INFOW Symbol
|
---|
1801 | );
|
---|
1802 |
|
---|
1803 | WINBOOL WINAPI SymGetSourceFileFromToken(
|
---|
1804 | HANDLE hProcess,
|
---|
1805 | PVOID Token,
|
---|
1806 | PCSTR Params,
|
---|
1807 | PSTR FilePath,
|
---|
1808 | DWORD Size
|
---|
1809 | );
|
---|
1810 |
|
---|
1811 | WINBOOL WINAPI SymGetSourceFileFromTokenW(
|
---|
1812 | HANDLE hProcess,
|
---|
1813 | PVOID Token,
|
---|
1814 | PCWSTR Params,
|
---|
1815 | PWSTR FilePath,
|
---|
1816 | DWORD Size
|
---|
1817 | );
|
---|
1818 |
|
---|
1819 | WINBOOL WINAPI SymGetSourceFileToken(
|
---|
1820 | HANDLE hProcess,
|
---|
1821 | ULONG64 Base,
|
---|
1822 | PCSTR FileSpec,
|
---|
1823 | PVOID *Token,
|
---|
1824 | DWORD *Size
|
---|
1825 | );
|
---|
1826 |
|
---|
1827 | WINBOOL WINAPI SymGetSourceFileTokenW(
|
---|
1828 | HANDLE hProcess,
|
---|
1829 | ULONG64 Base,
|
---|
1830 | PCWSTR FileSpec,
|
---|
1831 | PVOID *Token,
|
---|
1832 | DWORD *Size
|
---|
1833 | );
|
---|
1834 |
|
---|
1835 | WINBOOL WINAPI SymGetSourceFile(
|
---|
1836 | HANDLE hProcess,
|
---|
1837 | ULONG64 Base,
|
---|
1838 | PCSTR Params,
|
---|
1839 | PCSTR FileSpec,
|
---|
1840 | PSTR FilePath,
|
---|
1841 | DWORD Size
|
---|
1842 | );
|
---|
1843 |
|
---|
1844 | WINBOOL WINAPI SymGetSourceFileW(
|
---|
1845 | HANDLE hProcess,
|
---|
1846 | ULONG64 Base,
|
---|
1847 | PCWSTR Params,
|
---|
1848 | PCWSTR FileSpec,
|
---|
1849 | PWSTR FilePath,
|
---|
1850 | DWORD Size
|
---|
1851 | );
|
---|
1852 |
|
---|
1853 | WINBOOL WINAPI SymGetSourceVarFromToken(
|
---|
1854 | HANDLE hProcess,
|
---|
1855 | PVOID Token,
|
---|
1856 | PCSTR Params,
|
---|
1857 | PCSTR VarName,
|
---|
1858 | PSTR Value,
|
---|
1859 | DWORD Size
|
---|
1860 | );
|
---|
1861 |
|
---|
1862 | WINBOOL WINAPI SymGetSourceVarFromTokenW(
|
---|
1863 | HANDLE hProcess,
|
---|
1864 | PVOID Token,
|
---|
1865 | PCWSTR Params,
|
---|
1866 | PCWSTR VarName,
|
---|
1867 | PWSTR Value,
|
---|
1868 | DWORD Size
|
---|
1869 | );
|
---|
1870 |
|
---|
1871 | WINBOOL WINAPI SymGetSymbolFile(
|
---|
1872 | HANDLE hProcess,
|
---|
1873 | PCSTR SymPath,
|
---|
1874 | PCSTR ImageFile,
|
---|
1875 | DWORD Type,
|
---|
1876 | PSTR SymbolFile,
|
---|
1877 | size_t cSymbolFile,
|
---|
1878 | PSTR DbgFile,
|
---|
1879 | size_t cDbgFile
|
---|
1880 | );
|
---|
1881 |
|
---|
1882 | WINBOOL WINAPI SymGetSymbolFileW(
|
---|
1883 | HANDLE hProcess,
|
---|
1884 | PCWSTR SymPath,
|
---|
1885 | PCWSTR ImageFile,
|
---|
1886 | DWORD Type,
|
---|
1887 | PWSTR SymbolFile,
|
---|
1888 | size_t cSymbolFile,
|
---|
1889 | PWSTR DbgFile,
|
---|
1890 | size_t cDbgFile
|
---|
1891 | );
|
---|
1892 |
|
---|
1893 | WINBOOL WINAPI SymNext(
|
---|
1894 | HANDLE hProcess,
|
---|
1895 | PSYMBOL_INFO Symbol
|
---|
1896 | );
|
---|
1897 |
|
---|
1898 | WINBOOL WINAPI SymNextW(
|
---|
1899 | HANDLE hProcess,
|
---|
1900 | PSYMBOL_INFOW Symbol
|
---|
1901 | );
|
---|
1902 |
|
---|
1903 | WINBOOL WINAPI SymPrev(
|
---|
1904 | HANDLE hProcess,
|
---|
1905 | PSYMBOL_INFO Symbol
|
---|
1906 | );
|
---|
1907 |
|
---|
1908 | WINBOOL WINAPI SymPrevW(
|
---|
1909 | HANDLE hProcess,
|
---|
1910 | PSYMBOL_INFOW Symbol
|
---|
1911 | );
|
---|
1912 |
|
---|
1913 | WINBOOL WINAPI SymRefreshModuleList(
|
---|
1914 | HANDLE hProcess
|
---|
1915 | );
|
---|
1916 |
|
---|
1917 | #define SYMSEARCH_MASKOBJS 0x01
|
---|
1918 | #define SYMSEARCH_RECURSE 0x02
|
---|
1919 | #define SYMSEARCH_GLOBALSONLY 0x04
|
---|
1920 | #define SYMSEARCH_ALLITEMS 0x08
|
---|
1921 |
|
---|
1922 | WINBOOL WINAPI SymSearch(
|
---|
1923 | HANDLE hProcess,
|
---|
1924 | ULONG64 BaseOfDll,
|
---|
1925 | DWORD Index,
|
---|
1926 | DWORD SymTag,
|
---|
1927 | PCSTR Mask,
|
---|
1928 | DWORD64 Address,
|
---|
1929 | PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
|
---|
1930 | PVOID UserContext,
|
---|
1931 | DWORD Options
|
---|
1932 | );
|
---|
1933 |
|
---|
1934 | WINBOOL WINAPI SymSearchW(
|
---|
1935 | HANDLE hProcess,
|
---|
1936 | ULONG64 BaseOfDll,
|
---|
1937 | DWORD Index,
|
---|
1938 | DWORD SymTag,
|
---|
1939 | PCWSTR Mask,
|
---|
1940 | DWORD64 Address,
|
---|
1941 | PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
|
---|
1942 | PVOID UserContext,
|
---|
1943 | DWORD Options
|
---|
1944 | );
|
---|
1945 |
|
---|
1946 | WINBOOL WINAPI SymSrvGetFileIndexString(
|
---|
1947 | HANDLE hProcess,
|
---|
1948 | PCSTR SrvPath,
|
---|
1949 | PCSTR File,
|
---|
1950 | PSTR Index,
|
---|
1951 | size_t Size,
|
---|
1952 | DWORD Flags
|
---|
1953 | );
|
---|
1954 |
|
---|
1955 | WINBOOL WINAPI SymSrvGetFileIndexStringW(
|
---|
1956 | HANDLE hProcess,
|
---|
1957 | PCWSTR SrvPath,
|
---|
1958 | PCWSTR File,
|
---|
1959 | PWSTR Index,
|
---|
1960 | size_t Size,
|
---|
1961 | DWORD Flags
|
---|
1962 | );
|
---|
1963 |
|
---|
1964 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
1965 | #define SymSrvGetFileIndexString SymSrvGetFileIndexStringW
|
---|
1966 | #endif
|
---|
1967 |
|
---|
1968 | WINBOOL WINAPI SymSrvGetFileIndexInfo(
|
---|
1969 | PCSTR File,
|
---|
1970 | PSYMSRV_INDEX_INFO Info,
|
---|
1971 | DWORD Flags
|
---|
1972 | );
|
---|
1973 |
|
---|
1974 | WINBOOL WINAPI SymSrvGetFileIndexInfoW(
|
---|
1975 | PCWSTR File,
|
---|
1976 | PSYMSRV_INDEX_INFOW Info,
|
---|
1977 | DWORD Flags
|
---|
1978 | );
|
---|
1979 |
|
---|
1980 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
1981 | #define SymSrvGetFileIndexInfo SymSrvGetFileIndexInfoW
|
---|
1982 | #endif
|
---|
1983 |
|
---|
1984 | WINBOOL WINAPI SymSrvGetFileIndexes(
|
---|
1985 | PCTSTR File,
|
---|
1986 | GUID *Id,
|
---|
1987 | DWORD *Val1,
|
---|
1988 | DWORD *Val2,
|
---|
1989 | DWORD Flags
|
---|
1990 | );
|
---|
1991 |
|
---|
1992 | WINBOOL WINAPI SymSrvGetFileIndexesW(
|
---|
1993 | PCWSTR File,
|
---|
1994 | GUID *Id,
|
---|
1995 | DWORD *Val1,
|
---|
1996 | DWORD *Val2,
|
---|
1997 | DWORD Flags
|
---|
1998 | );
|
---|
1999 |
|
---|
2000 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
2001 | #define SymSrvGetFileIndexes SymSrvGetFileIndexesW
|
---|
2002 | #endif
|
---|
2003 |
|
---|
2004 | PCSTR WINAPI SymSrvGetSupplement(
|
---|
2005 | HANDLE hProcess,
|
---|
2006 | PCSTR SymPath,
|
---|
2007 | PCSTR Node,
|
---|
2008 | PCSTR File
|
---|
2009 | );
|
---|
2010 |
|
---|
2011 | PCWSTR WINAPI SymSrvGetSupplementW(
|
---|
2012 | HANDLE hProcess,
|
---|
2013 | PCWSTR SymPath,
|
---|
2014 | PCWSTR Node,
|
---|
2015 | PCWSTR File
|
---|
2016 | );
|
---|
2017 |
|
---|
2018 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
2019 | #define SymSrvGetSupplement SymSrvGetSupplementW
|
---|
2020 | #endif
|
---|
2021 |
|
---|
2022 | WINBOOL WINAPI SymSrvIsStore(
|
---|
2023 | HANDLE hProcess,
|
---|
2024 | PCSTR path
|
---|
2025 | );
|
---|
2026 |
|
---|
2027 | WINBOOL WINAPI SymSrvIsStoreW(
|
---|
2028 | HANDLE hProcess,
|
---|
2029 | PCWSTR path
|
---|
2030 | );
|
---|
2031 |
|
---|
2032 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
2033 | #define SymSrvIsStore SymSrvIsStoreW
|
---|
2034 | #endif
|
---|
2035 |
|
---|
2036 | PCSTR WINAPI SymSrvStoreFile(
|
---|
2037 | HANDLE hProcess,
|
---|
2038 | PCSTR SrvPath,
|
---|
2039 | PCSTR File,
|
---|
2040 | DWORD Flags
|
---|
2041 | );
|
---|
2042 |
|
---|
2043 | PCWSTR WINAPI SymSrvStoreFileW(
|
---|
2044 | HANDLE hProcess,
|
---|
2045 | PCWSTR SrvPath,
|
---|
2046 | PCWSTR File,
|
---|
2047 | DWORD Flags
|
---|
2048 | );
|
---|
2049 |
|
---|
2050 | #define SYMSTOREOPT_COMPRESS 0x01
|
---|
2051 | #define SYMSTOREOPT_OVERWRITE 0x02
|
---|
2052 | #define SYMSTOREOPT_RETURNINDEX 0x04
|
---|
2053 | #define SYMSTOREOPT_POINTER 0x08
|
---|
2054 | #define SYMSTOREOPT_PASS_IF_EXISTS 0x40
|
---|
2055 |
|
---|
2056 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
2057 | #define SymSrvStoreFile SymSrvStoreFileW
|
---|
2058 | #endif
|
---|
2059 |
|
---|
2060 | PCSTR WINAPI SymSrvStoreSupplement(
|
---|
2061 | HANDLE hProcess,
|
---|
2062 | const PCTSTR SymPath,
|
---|
2063 | PCSTR Node,
|
---|
2064 | PCSTR File,
|
---|
2065 | DWORD Flags
|
---|
2066 | );
|
---|
2067 |
|
---|
2068 | PCWSTR WINAPI SymSrvStoreSupplementW(
|
---|
2069 | HANDLE hProcess,
|
---|
2070 | const PCWSTR SymPath,
|
---|
2071 | PCWSTR Node,
|
---|
2072 | PCWSTR File,
|
---|
2073 | DWORD Flags
|
---|
2074 | );
|
---|
2075 |
|
---|
2076 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
2077 | #define SymSrvStoreSupplement SymSrvStoreSupplementW
|
---|
2078 | #endif
|
---|
2079 |
|
---|
2080 | PCSTR WINAPI SymSrvDeltaName(
|
---|
2081 | HANDLE hProcess,
|
---|
2082 | PCSTR SymPath,
|
---|
2083 | PCSTR Type,
|
---|
2084 | PCSTR File1,
|
---|
2085 | PCSTR File2
|
---|
2086 | );
|
---|
2087 |
|
---|
2088 | PCWSTR WINAPI SymSrvDeltaNameW(
|
---|
2089 | HANDLE hProcess,
|
---|
2090 | PCWSTR SymPath,
|
---|
2091 | PCWSTR Type,
|
---|
2092 | PCWSTR File1,
|
---|
2093 | PCWSTR File2
|
---|
2094 | );
|
---|
2095 |
|
---|
2096 | #ifdef DBGHELP_TRANSLATE_TCHAR
|
---|
2097 | #define SymSrvDeltaName SymSrvDeltaNameW
|
---|
2098 | #endif
|
---|
2099 |
|
---|
2100 | #include <poppack.h>
|
---|
2101 |
|
---|
2102 | #ifdef __cplusplus
|
---|
2103 | }
|
---|
2104 | #endif
|
---|
2105 |
|
---|