blob: 26f6628a55afa4318fcc51b34cfb9da80cdc716f [file] [log] [blame]
Patrik Stridvall091e7851998-10-11 17:04:17 +00001/*
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00002 * Declarations for IMAGEHLP
3 *
4 * Copyright (C) 1998 Patrik Stridvall
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
Jonathan Ernst360a3f92006-05-18 14:49:52 +020018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Patrik Stridvall091e7851998-10-11 17:04:17 +000019 */
20
21#ifndef __WINE_IMAGEHLP_H
22#define __WINE_IMAGEHLP_H
23
Francois Gougetd9c97f32004-10-25 21:50:09 +000024#include <wintrust.h>
25
Patrik Stridvall14da7b11999-06-12 10:53:06 +000026#ifdef __cplusplus
27extern "C" {
28#endif /* defined(__cplusplus) */
29
Steven Edwardsad4a2b92003-10-09 19:45:07 +000030#define API_VERSION_NUMBER 7 /* 7 is the default */
31
Patrik Stridvall091e7851998-10-11 17:04:17 +000032/***********************************************************************
33 * Types
34 */
35
Vincent Béron9a624912002-05-31 23:06:46 +000036typedef PVOID DIGEST_HANDLE;
Patrik Stridvall091e7851998-10-11 17:04:17 +000037
38/***********************************************************************
39 * Enums/Defines
40 */
41
Alexandre Julliarda3960291999-02-26 11:11:13 +000042typedef enum _IMAGEHLP_STATUS_REASON {
Patrik Stridvall091e7851998-10-11 17:04:17 +000043 BindOutOfMemory,
44 BindRvaToVaFailed,
45 BindNoRoomInImage,
46 BindImportModuleFailed,
47 BindImportProcedureFailed,
48 BindImportModule,
49 BindImportProcedure,
50 BindForwarder,
51 BindForwarderNOT,
52 BindImageModified,
53 BindExpandFileHeaders,
54 BindImageComplete,
55 BindMismatchedSymbols,
56 BindSymbolsNotUpdated
Alexandre Julliarda3960291999-02-26 11:11:13 +000057} IMAGEHLP_STATUS_REASON;
Patrik Stridvall091e7851998-10-11 17:04:17 +000058
59#define BIND_NO_BOUND_IMPORTS 0x00000001
60#define BIND_NO_UPDATE 0x00000002
61#define BIND_ALL_IMAGES 0x00000004
62#define BIND_CACHE_IMPORT_DLLS 0x00000008
63
64#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 0x01
65#define CERT_PE_IMAGE_DIGEST_RESOURCES 0x02
66#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
67#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 0x08
68
69#define CERT_SECTION_TYPE_ANY 0xFF
70
71#define WIN_CERT_REVISION_1_0 0x0100
72#define WIN_CERT_REVISION_2_0 0x0200
73
74#define WIN_CERT_TYPE_X509 0x0001 /* X.509 Certificate */
75#define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 /* PKCS SignedData */
76#define WIN_CERT_TYPE_RESERVED_1 0x0003 /* Reserved */
77
78#define SPLITSYM_REMOVE_PRIVATE 0x00000001
79#define SPLITSYM_EXTRACT_ALL 0x00000002
80#define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004
81
Patrik Stridvall091e7851998-10-11 17:04:17 +000082#define FRAME_FPO 0
83#define FRAME_TRAP 1
84#define FRAME_TSS 2
85#define FRAME_NONFPO 3
86
87#define CHECKSUM_SUCCESS 0
88#define CHECKSUM_OPEN_FAILURE 1
89#define CHECKSUM_MAP_FAILURE 2
90#define CHECKSUM_MAPVIEW_FAILURE 3
91#define CHECKSUM_UNICODE_FAILURE 4
92
Alexandre Julliarda3960291999-02-26 11:11:13 +000093typedef enum _ADRESS_MODE {
Patrik Stridvall091e7851998-10-11 17:04:17 +000094 AddrMode1616,
95 AddrMode1632,
96 AddrModeReal,
97 AddrModeFlat
Alexandre Julliarda3960291999-02-26 11:11:13 +000098} ADDRESS_MODE;
Patrik Stridvall091e7851998-10-11 17:04:17 +000099
100#define SYMOPT_CASE_INSENSITIVE 0x00000001
101#define SYMOPT_UNDNAME 0x00000002
102#define SYMOPT_DEFERRED_LOADS 0x00000004
103#define SYMOPT_NO_CPP 0x00000008
104#define SYMOPT_LOAD_LINES 0x00000010
105#define SYMOPT_OMAP_FIND_NEAREST 0x00000020
106
107#define SYMF_OMAP_GENERATED 0x00000001
108#define SYMF_OMAP_MODIFIED 0x00000002
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000109/* 0x00000004 has been obsoleted */
110#define SYMF_REGISTER 0x00000008
111#define SYMF_REGREL 0x00000010
112#define SYMF_FRAMEREL 0x00000020
113#define SYMF_PARAMETER 0x00000040
114#define SYMF_LOCAL 0x00000080
115#define SYMF_CONSTANT 0x00000100
116#define SYMF_EXPORT 0x00000200
117#define SYMF_FORWARDER 0x00000400
118#define SYMF_FUNCTION 0x00000800
Patrik Stridvall091e7851998-10-11 17:04:17 +0000119
Francois Gouget9dc50e12001-05-11 19:54:47 +0000120typedef enum {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000121 SymNone,
122 SymCoff,
123 SymCv,
124 SymPdb,
125 SymExport,
126 SymDeferred,
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000127 SymSym,
128 SymDia,
129 SymVirtual,
130 NumSymTypes
Francois Gouget9dc50e12001-05-11 19:54:47 +0000131} SYM_TYPE;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000132
133#define UNDNAME_COMPLETE 0x0000
134#define UNDNAME_NO_LEADING_UNDERSCORES 0x0001
135#define UNDNAME_NO_MS_KEYWORDS 0x0002
136#define UNDNAME_NO_FUNCTION_RETURNS 0x0004
137#define UNDNAME_NO_ALLOCATION_MODEL 0x0008
138#define UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010
139#define UNDNAME_NO_MS_THISTYPE 0x0020
140#define UNDNAME_NO_CV_THISTYPE 0x0040
141#define UNDNAME_NO_THISTYPE 0x0060
142#define UNDNAME_NO_ACCESS_SPECIFIERS 0x0080
143#define UNDNAME_NO_THROW_SIGNATURES 0x0100
144#define UNDNAME_NO_MEMBER_TYPE 0x0200
145#define UNDNAME_NO_RETURN_UDT_MODEL 0x0400
146#define UNDNAME_32_BIT_DECODE 0x0800
147#define UNDNAME_NAME_ONLY 0x1000
148#define UNDNAME_NO_ARGUMENTS 0x2000
149#define UNDNAME_NO_SPECIAL_SYMS 0x4000
150
151#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
152#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
153#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
154#define CBA_SYMBOLS_UNLOADED 0x00000004
155#define CBA_DUPLICATE_SYMBOL 0x00000005
156
Patrik Stridvall091e7851998-10-11 17:04:17 +0000157/***********************************************************************
158 * Structures
159 */
160
Alexandre Julliarda3960291999-02-26 11:11:13 +0000161typedef struct _LOADED_IMAGE {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000162 LPSTR ModuleName;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000163 HANDLE hFile;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000164 PUCHAR MappedAddress;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000165 PIMAGE_NT_HEADERS FileHeader;
166 PIMAGE_SECTION_HEADER LastRvaSection;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000167 ULONG NumberOfSections;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000168 PIMAGE_SECTION_HEADER Sections;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000169 ULONG Characteristics;
170 BOOLEAN fSystemImage;
171 BOOLEAN fDOSImage;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000172 LIST_ENTRY Links;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000173 ULONG SizeOfImage;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000174} LOADED_IMAGE, *PLOADED_IMAGE;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000175
Alexandre Julliarda3960291999-02-26 11:11:13 +0000176typedef struct _WIN_CERTIFICATE {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000177 DWORD dwLength;
Vincent Béron9a624912002-05-31 23:06:46 +0000178 WORD wRevision; /* WIN_CERT_REVISON_xxx */
Patrik Stridvall091e7851998-10-11 17:04:17 +0000179 WORD wCertificateType; /* WIN_CERT_TYPE_xxx */
180 BYTE bCertificate[ANYSIZE_ARRAY];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000181} WIN_CERTIFICATE, *PWIN_CERTIFICATE;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000182
Alexandre Julliarda3960291999-02-26 11:11:13 +0000183typedef struct _API_VERSION {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000184 USHORT MajorVersion;
185 USHORT MinorVersion;
186 USHORT Revision;
187 USHORT Reserved;
Steven Edwardsad4a2b92003-10-09 19:45:07 +0000188} API_VERSION, *LPAPI_VERSION;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000189
Alexandre Julliarda3960291999-02-26 11:11:13 +0000190typedef struct _IMAGE_DEBUG_INFORMATION {
191 LIST_ENTRY List;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000192 DWORD Size;
193 PVOID MappedBase;
194 USHORT Machine;
195 USHORT Characteristics;
196 DWORD CheckSum;
197 DWORD ImageBase;
198 DWORD SizeOfImage;
Vincent Béron9a624912002-05-31 23:06:46 +0000199
Patrik Stridvall091e7851998-10-11 17:04:17 +0000200 DWORD NumberOfSections;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000201 PIMAGE_SECTION_HEADER Sections;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000202
203 DWORD ExportedNamesSize;
204 LPSTR ExportedNames;
205
206 DWORD NumberOfFunctionTableEntries;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000207 PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000208 DWORD LowestFunctionStartingAddress;
209 DWORD HighestFunctionEndingAddress;
210
211 DWORD NumberOfFpoTableEntries;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000212 PFPO_DATA FpoTableEntries;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000213
214 DWORD SizeOfCoffSymbols;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000215 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000216
217 DWORD SizeOfCodeViewSymbols;
218 PVOID CodeViewSymbols;
219
220 LPSTR ImageFilePath;
221 LPSTR ImageFileName;
222 LPSTR DebugFilePath;
223
224 DWORD TimeDateStamp;
225
Alexandre Julliarda3960291999-02-26 11:11:13 +0000226 BOOL RomImage;
227 PIMAGE_DEBUG_DIRECTORY DebugDirectory;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000228 DWORD NumberOfDebugDirectories;
229
230 DWORD Reserved[3];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000231} IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000232
Alexandre Julliarda3960291999-02-26 11:11:13 +0000233typedef struct _ADDRESS {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000234 DWORD Offset;
235 WORD Segment;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000236 ADDRESS_MODE Mode;
237} ADDRESS, *PADDRESS;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000238
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100239typedef struct _ADDRESS64 {
240 DWORD64 Offset;
241 WORD Segment;
242 ADDRESS_MODE Mode;
243} ADDRESS64, *LPADDRESS64;
244
Alexandre Julliarda3960291999-02-26 11:11:13 +0000245typedef struct _KDHELP {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000246 DWORD Thread;
247 DWORD ThCallbackStack;
248 DWORD NextCallback;
249 DWORD FramePointer;
250 DWORD KiCallUserMode;
251 DWORD KeUserCallbackDispatcher;
252 DWORD SystemRangeStart;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000253} KDHELP, *PKDHELP;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000254
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100255typedef struct _KDHELP64 {
256 DWORD64 Thread;
257 DWORD ThCallbackStack;
258 DWORD ThCallbackBStore;
259 DWORD NextCallback;
260 DWORD FramePointer;
261 DWORD64 KiCallUserMode;
262 DWORD64 KeUserCallbackDispatcher;
263 DWORD64 SystemRangeStart;
264 DWORD64 Reserved[8];
265} KDHELP64, *PKDHELP64;
266
Alexandre Julliarda3960291999-02-26 11:11:13 +0000267typedef struct _STACKFRAME {
268 ADDRESS AddrPC;
269 ADDRESS AddrReturn;
270 ADDRESS AddrFrame;
271 ADDRESS AddrStack;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000272 PVOID FuncTableEntry;
273 DWORD Params[4];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000274 BOOL Far;
275 BOOL Virtual;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000276 DWORD Reserved[3];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000277 KDHELP KdHelp;
Steven Edwardsad4a2b92003-10-09 19:45:07 +0000278} STACKFRAME, *LPSTACKFRAME;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000279
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100280typedef struct _STACKFRAME64 {
281 ADDRESS64 AddrPC;
282 ADDRESS64 AddrReturn;
283 ADDRESS64 AddrFrame;
284 ADDRESS64 AddrStack;
285 ADDRESS64 AddrBStore;
286 PVOID FuncTableEntry;
287 DWORD64 Params[4];
288 BOOL Far;
289 BOOL Virtual;
290 DWORD64 Reserved[3];
291 KDHELP64 KdHelp;
292} STACKFRAME64, *LPSTACKFRAME64;
293
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000294typedef struct _SOURCEFILE {
295 DWORD64 ModBase;
296 PCHAR FileName;
297} SOURCEFILE, *PSOURCEFILE;
298
299typedef struct _IMAGEHLP_STACK_FRAME
300{
301 DWORD InstructionOffset;
302 DWORD ReturnOffset;
303 DWORD FrameOffset;
304 DWORD StackOffset;
305 DWORD BackingStoreOffset;
306 DWORD FuncTableEntry;
307 DWORD Params[4];
308 DWORD Reserved[5];
309 DWORD Virtual;
310 DWORD Reserved2;
311} IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
312
313typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
314
Alexandre Julliarda3960291999-02-26 11:11:13 +0000315typedef struct _IMAGEHLP_SYMBOL {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000316 DWORD SizeOfStruct;
317 DWORD Address;
318 DWORD Size;
319 DWORD Flags;
320 DWORD MaxNameLength;
321 CHAR Name[ANYSIZE_ARRAY];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000322} IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000323
Alexandre Julliarda3960291999-02-26 11:11:13 +0000324typedef struct _IMAGEHLP_MODULE {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000325 DWORD SizeOfStruct;
326 DWORD BaseOfImage;
327 DWORD ImageSize;
328 DWORD TimeDateStamp;
329 DWORD CheckSum;
330 DWORD NumSyms;
Francois Gouget9dc50e12001-05-11 19:54:47 +0000331 SYM_TYPE SymType;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000332 CHAR ModuleName[32];
333 CHAR ImageName[256];
334 CHAR LoadedImageName[256];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000335} IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000336
Alexandre Julliarda3960291999-02-26 11:11:13 +0000337typedef struct _IMAGEHLP_LINE {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000338 DWORD SizeOfStruct;
339 DWORD Key;
340 DWORD LineNumber;
341 PCHAR FileName;
342 DWORD Address;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000343} IMAGEHLP_LINE, *PIMAGEHLP_LINE;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000344
Alexandre Julliarda3960291999-02-26 11:11:13 +0000345typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000346 DWORD SizeOfStruct;
347 DWORD BaseOfImage;
348 DWORD CheckSum;
349 DWORD TimeDateStamp;
350 CHAR FileName[MAX_PATH];
351 BOOLEAN Reparse;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000352} IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000353
Alexandre Julliarda3960291999-02-26 11:11:13 +0000354typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
Patrik Stridvall091e7851998-10-11 17:04:17 +0000355 DWORD SizeOfStruct;
356 DWORD NumberOfDups;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000357 PIMAGEHLP_SYMBOL Symbol;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000358 ULONG SelectedSymbol;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000359} IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
Patrik Stridvall091e7851998-10-11 17:04:17 +0000360
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000361#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
362#define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER
363#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL
364#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL
365#define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER
366#define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL
367#define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT
368#define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION
369
370typedef struct _SYMBOL_INFO {
371 ULONG SizeOfStruct;
372 ULONG TypeIndex;
373 ULONG64 Reserved[2];
374 ULONG info;
375 ULONG Size;
376 ULONG64 ModBase;
377 ULONG Flags;
378 ULONG64 Value;
379 ULONG64 Address;
380 ULONG Register;
381 ULONG Scope;
382 ULONG Tag;
383 ULONG NameLen;
384 ULONG MaxNameLen;
385 CHAR Name[1];
386} SYMBOL_INFO, *PSYMBOL_INFO;
387
Patrik Stridvall091e7851998-10-11 17:04:17 +0000388/***********************************************************************
389 * Callbacks
390 */
391
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000392typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)(
Alexandre Julliarda3960291999-02-26 11:11:13 +0000393 IMAGEHLP_STATUS_REASON Reason, LPSTR ImageName, LPSTR DllName,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000394 ULONG Va, ULONG Parameter
395);
396
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000397typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
398 PSYMBOL_INFO pSymInfo, DWORD SymbolSize, PVOID UserContext
399);
400
Vincent Béron297ef3a2005-11-04 11:16:48 +0000401typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000402 PSOURCEFILE pSourceFile, PVOID UserContext
403);
404
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000405typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000406 LPSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
407);
408
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000409typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
Vincent Béron9a624912002-05-31 23:06:46 +0000410 LPSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000411 PVOID UserContext
412);
413
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000414typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
Vincent Béron9a624912002-05-31 23:06:46 +0000415 LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000416 PVOID UserContext
417);
418
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000419typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
Alexandre Julliarda3960291999-02-26 11:11:13 +0000420 HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000421 PVOID UserContext
422);
423
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000424typedef BOOL (CALLBACK *DIGEST_FUNCTION)(
Alexandre Julliarda3960291999-02-26 11:11:13 +0000425 DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength
Patrik Stridvall091e7851998-10-11 17:04:17 +0000426);
427
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000428typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
Francois Gougetbba4bb12002-09-17 01:35:09 +0000429 HANDLE hProcess, LPCVOID lpBaseAddress, PVOID lpBuffer,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000430 DWORD nSize, PDWORD lpNumberOfBytesRead
431);
432
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100433typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)(
434 HANDLE hProcess, DWORD64 lpBaseAddress, PVOID lpBuffer,
435 DWORD nSize, LPDWORD lpNumberOfBytesRead
436);
437
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000438typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
Alexandre Julliarda3960291999-02-26 11:11:13 +0000439 HANDLE hProcess, DWORD AddrBase
Patrik Stridvall091e7851998-10-11 17:04:17 +0000440);
441
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100442typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
443 HANDLE hProcess, DWORD64 AddrBase
444);
445
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000446typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
Alexandre Julliarda3960291999-02-26 11:11:13 +0000447 HANDLE hProcess, DWORD ReturnAddress);
Patrik Stridvall091e7851998-10-11 17:04:17 +0000448
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100449typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(
450 HANDLE hProcess, DWORD64 ReturnAddress);
451
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000452typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
Alexandre Julliarda3960291999-02-26 11:11:13 +0000453 HANDLE hProcess, HANDLE hThread, PADDRESS lpaddr
Patrik Stridvall091e7851998-10-11 17:04:17 +0000454);
455
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100456typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(
457 HANDLE hProcess, HANDLE hThread, LPADDRESS64 lpaddr
458);
459
Patrik Stridvall091e7851998-10-11 17:04:17 +0000460/***********************************************************************
461 * Functions
462 */
463
Alexandre Julliarda3960291999-02-26 11:11:13 +0000464BOOL WINAPI BindImage(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000465 LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath
466);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000467BOOL WINAPI BindImageEx(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000468 DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
Alexandre Julliarda3960291999-02-26 11:11:13 +0000469 PIMAGEHLP_STATUS_ROUTINE StatusRoutine
Patrik Stridvall091e7851998-10-11 17:04:17 +0000470);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000471PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
Vincent Béron9a624912002-05-31 23:06:46 +0000472 LPVOID BaseAddress, DWORD FileLength,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000473 LPDWORD HeaderSum, LPDWORD CheckSum
474);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000475BOOL WINAPI EnumerateLoadedModules(
476 HANDLE hProcess,
477 PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000478 PVOID UserContext
479);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000480HANDLE WINAPI FindDebugInfoFile(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000481 LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath
482);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000483HANDLE WINAPI FindExecutableImage(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000484 LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath
485);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000486BOOL WINAPI GetImageConfigInformation(
Vincent Béron9a624912002-05-31 23:06:46 +0000487 PLOADED_IMAGE LoadedImage,
Alexandre Julliarda3960291999-02-26 11:11:13 +0000488 PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
Patrik Stridvall091e7851998-10-11 17:04:17 +0000489);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000490DWORD WINAPI GetImageUnusedHeaderBytes(
491 PLOADED_IMAGE LoadedImage,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000492 LPDWORD SizeUnusedHeaderBytes
493);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000494DWORD WINAPI GetTimestampForLoadedLibrary(
495 HMODULE Module
Patrik Stridvall091e7851998-10-11 17:04:17 +0000496);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000497BOOL WINAPI ImageAddCertificate(
498 HANDLE FileHandle, PWIN_CERTIFICATE Certificate, PDWORD Index
Patrik Stridvall091e7851998-10-11 17:04:17 +0000499);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000500PVOID WINAPI ImageDirectoryEntryToData(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000501 PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
502);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000503BOOL WINAPI ImageEnumerateCertificates(
504 HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000505 PDWORD Indices, DWORD IndexCount
506);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000507BOOL WINAPI ImageGetCertificateData(
508 HANDLE FileHandle, DWORD CertificateIndex,
509 PWIN_CERTIFICATE Certificate, PDWORD RequiredLength
Patrik Stridvall091e7851998-10-11 17:04:17 +0000510);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000511BOOL WINAPI ImageGetCertificateHeader(
512 HANDLE FileHandle, DWORD CertificateIndex,
513 PWIN_CERTIFICATE Certificateheader
Patrik Stridvall091e7851998-10-11 17:04:17 +0000514);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000515BOOL WINAPI ImageGetDigestStream(
516 HANDLE FileHandle, DWORD DigestLevel,
517 DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle
Patrik Stridvall091e7851998-10-11 17:04:17 +0000518);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000519PLOADED_IMAGE WINAPI ImageLoad(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000520 LPSTR DllName, LPSTR DllPath
521);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000522PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000523 PVOID Base
524);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000525BOOL WINAPI ImageRemoveCertificate(
526 HANDLE FileHandle, DWORD Index
Patrik Stridvall091e7851998-10-11 17:04:17 +0000527);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000528PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
529 PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva
Patrik Stridvall091e7851998-10-11 17:04:17 +0000530);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000531PVOID WINAPI ImageRvaToVa(
532 PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
533 PIMAGE_SECTION_HEADER *LastRvaSection
Patrik Stridvall091e7851998-10-11 17:04:17 +0000534);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000535BOOL WINAPI ImageUnload(
536 PLOADED_IMAGE LoadedImage
Patrik Stridvall091e7851998-10-11 17:04:17 +0000537);
Steven Edwardsad4a2b92003-10-09 19:45:07 +0000538LPAPI_VERSION WINAPI ImagehlpApiVersion(
Vincent Béron9a624912002-05-31 23:06:46 +0000539 void
Patrik Stridvall091e7851998-10-11 17:04:17 +0000540);
Steven Edwardsad4a2b92003-10-09 19:45:07 +0000541LPAPI_VERSION WINAPI ImagehlpApiVersionEx(
542 LPAPI_VERSION AppVersion
Patrik Stridvall091e7851998-10-11 17:04:17 +0000543);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000544BOOL WINAPI MakeSureDirectoryPathExists(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000545 LPCSTR DirPath
546);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000547BOOL WINAPI MapAndLoad(
548 LPSTR ImageName, LPSTR DllPath, PLOADED_IMAGE LoadedImage,
549 BOOL DotDll, BOOL ReadOnly
Patrik Stridvall091e7851998-10-11 17:04:17 +0000550);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000551PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
552 HANDLE FileHandle, LPSTR FileName,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000553 LPSTR SymbolPath, DWORD ImageBase
554);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000555DWORD WINAPI MapFileAndCheckSumA(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000556 LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
557);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000558DWORD WINAPI MapFileAndCheckSumW(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000559 LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
560);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000561BOOL WINAPI ReBaseImage(
562 LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
563 BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000564 ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
565 ULONG *NewImageBase, ULONG TimeStamp
566);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000567BOOL WINAPI RemovePrivateCvSymbolic(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000568 PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
569);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000570VOID WINAPI RemoveRelocations(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000571 PCHAR ImageName
572);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000573BOOL WINAPI SearchTreeForFile(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000574 LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer
575);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000576BOOL WINAPI SetImageConfigInformation(
577 PLOADED_IMAGE LoadedImage,
578 PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
Patrik Stridvall091e7851998-10-11 17:04:17 +0000579);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000580BOOL WINAPI SplitSymbols(
Vincent Béron9a624912002-05-31 23:06:46 +0000581 LPSTR ImageName, LPSTR SymbolsPath,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000582 LPSTR SymbolFilePath, DWORD Flags
583);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000584BOOL WINAPI StackWalk(
585 DWORD MachineType, HANDLE hProcess, HANDLE hThread,
Steven Edwardsad4a2b92003-10-09 19:45:07 +0000586 LPSTACKFRAME StackFrame, PVOID ContextRecord,
Alexandre Julliarda3960291999-02-26 11:11:13 +0000587 PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
588 PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
589 PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
590 PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
Patrik Stridvall091e7851998-10-11 17:04:17 +0000591);
Vitaliy Margolenf09ed5e2005-11-28 10:59:51 +0100592BOOL WINAPI StackWalk64(
593 DWORD MachineType, HANDLE hProcess, HANDLE hThread,
594 LPSTACKFRAME64 StackFrame, PVOID ContextRecord,
595 PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
596 PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
597 PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
598 PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
599);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000600BOOL WINAPI SymCleanup(
601 HANDLE hProcess
Patrik Stridvall091e7851998-10-11 17:04:17 +0000602);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000603BOOL WINAPI SymEnumerateModules(
604 HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000605 PVOID UserContext
606);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000607BOOL WINAPI SymEnumerateSymbols(
608 HANDLE hProcess, DWORD BaseOfDll,
609 PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
Patrik Stridvall091e7851998-10-11 17:04:17 +0000610);
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000611BOOL WINAPI SymEnumSourceFiles(
612 HANDLE hProcess, DWORD ModBase, LPSTR Mask,
Vincent Béron297ef3a2005-11-04 11:16:48 +0000613 PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles, PVOID UserContext
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000614);
615BOOL WINAPI SymEnumSymbols(
616 HANDLE hProcess, DWORD BaseOfDll, PCSTR Mask,
617 PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
618);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000619PVOID WINAPI SymFunctionTableAccess(
620 HANDLE hProcess, DWORD AddrBase
Patrik Stridvall091e7851998-10-11 17:04:17 +0000621);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000622DWORD WINAPI SymGetModuleBase(
623 HANDLE hProcess, DWORD dwAddr
Patrik Stridvall091e7851998-10-11 17:04:17 +0000624);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000625BOOL WINAPI SymGetModuleInfo(
626 HANDLE hProcess, DWORD dwAddr,
627 PIMAGEHLP_MODULE ModuleInfo
Patrik Stridvall091e7851998-10-11 17:04:17 +0000628);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000629DWORD WINAPI SymGetOptions(
Juergen Schmiedebc2b771998-11-14 18:59:30 +0000630 void
Patrik Stridvall091e7851998-10-11 17:04:17 +0000631);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000632BOOL WINAPI SymGetSearchPath(
633 HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength
Patrik Stridvall091e7851998-10-11 17:04:17 +0000634);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000635BOOL WINAPI SymGetSymFromAddr(
636 HANDLE hProcess, DWORD dwAddr,
637 PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol
Patrik Stridvall091e7851998-10-11 17:04:17 +0000638);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000639BOOL WINAPI SymGetSymFromName(
640 HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol
Patrik Stridvall091e7851998-10-11 17:04:17 +0000641);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000642BOOL WINAPI SymGetSymNext(
643 HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
Patrik Stridvall091e7851998-10-11 17:04:17 +0000644);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000645BOOL WINAPI SymGetSymPrev(
646 HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
Patrik Stridvall091e7851998-10-11 17:04:17 +0000647);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000648BOOL WINAPI SymInitialize(
649 HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess
Patrik Stridvall091e7851998-10-11 17:04:17 +0000650);
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000651DWORD WINAPI SymLoadModule(
Alexandre Julliarda3960291999-02-26 11:11:13 +0000652 HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000653 DWORD BaseOfDll, DWORD SizeOfDll
654);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000655BOOL WINAPI SymRegisterCallback(
656 HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
Patrik Stridvall091e7851998-10-11 17:04:17 +0000657 PVOID UserContext
658);
Eric Pouechf35d1ca2004-04-05 22:50:45 +0000659DWORD WINAPI SymSetContext(
660 HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame,
661 PIMAGEHLP_CONTEXT Context
662);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000663DWORD WINAPI SymSetOptions(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000664 DWORD SymOptions
665);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000666BOOL WINAPI SymSetSearchPath(
667 HANDLE hProcess, LPSTR szSearchPath
Patrik Stridvall091e7851998-10-11 17:04:17 +0000668);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000669BOOL WINAPI SymUnDName(
670 PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength
Patrik Stridvall091e7851998-10-11 17:04:17 +0000671);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000672BOOL WINAPI SymUnloadModule(
673 HANDLE hProcess, DWORD BaseOfDll
Patrik Stridvall091e7851998-10-11 17:04:17 +0000674);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000675BOOL WINAPI TouchFileTimes(
676 HANDLE FileHandle, LPSYSTEMTIME lpSystemTime
Patrik Stridvall091e7851998-10-11 17:04:17 +0000677);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000678DWORD WINAPI UnDecorateSymbolName(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000679 LPCSTR DecoratedName, LPSTR UnDecoratedName,
680 DWORD UndecoratedLength, DWORD Flags
681);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000682BOOL WINAPI UnMapAndLoad(
683 PLOADED_IMAGE LoadedImage
Patrik Stridvall091e7851998-10-11 17:04:17 +0000684);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000685BOOL WINAPI UnmapDebugInformation(
686 PIMAGE_DEBUG_INFORMATION DebugInfo
Patrik Stridvall091e7851998-10-11 17:04:17 +0000687);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000688BOOL WINAPI UpdateDebugInfoFile(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000689 LPSTR ImageFileName, LPSTR SymbolPath,
Alexandre Julliarda3960291999-02-26 11:11:13 +0000690 LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders
Patrik Stridvall091e7851998-10-11 17:04:17 +0000691);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000692BOOL WINAPI UpdateDebugInfoFileEx(
Patrik Stridvall091e7851998-10-11 17:04:17 +0000693 LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
Alexandre Julliarda3960291999-02-26 11:11:13 +0000694 PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum
Patrik Stridvall091e7851998-10-11 17:04:17 +0000695);
696
Patrik Stridvall14da7b11999-06-12 10:53:06 +0000697#ifdef __cplusplus
698} /* extern "C" */
699#endif /* defined(__cplusplus) */
700
Patrik Stridvall091e7851998-10-11 17:04:17 +0000701#endif /* __WINE_IMAGEHLP_H */