CreateDIBSection takes a const pointer to BITMAPINFO.
[wine] / include / imagehlp.h
1 /*
2  * 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
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_IMAGEHLP_H
22 #define __WINE_IMAGEHLP_H
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* defined(__cplusplus) */
27
28 #define API_VERSION_NUMBER 7            /* 7 is the default */
29
30 /***********************************************************************
31  * Types
32  */
33
34 typedef PVOID DIGEST_HANDLE;
35
36 /***********************************************************************
37  * Enums/Defines
38  */
39
40 typedef enum _IMAGEHLP_STATUS_REASON {
41   BindOutOfMemory,
42   BindRvaToVaFailed,
43   BindNoRoomInImage,
44   BindImportModuleFailed,
45   BindImportProcedureFailed,
46   BindImportModule,
47   BindImportProcedure,
48   BindForwarder,
49   BindForwarderNOT,
50   BindImageModified,
51   BindExpandFileHeaders,
52   BindImageComplete,
53   BindMismatchedSymbols,
54   BindSymbolsNotUpdated
55 } IMAGEHLP_STATUS_REASON;
56
57 #define BIND_NO_BOUND_IMPORTS  0x00000001
58 #define BIND_NO_UPDATE         0x00000002
59 #define BIND_ALL_IMAGES        0x00000004
60 #define BIND_CACHE_IMPORT_DLLS 0x00000008
61
62 #define CERT_PE_IMAGE_DIGEST_DEBUG_INFO      0x01
63 #define CERT_PE_IMAGE_DIGEST_RESOURCES       0x02
64 #define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
65 #define CERT_PE_IMAGE_DIGEST_NON_PE_INFO     0x08
66
67 #define CERT_SECTION_TYPE_ANY 0xFF
68
69 #define WIN_CERT_REVISION_1_0 0x0100
70 #define WIN_CERT_REVISION_2_0 0x0200
71
72 #define WIN_CERT_TYPE_X509             0x0001 /* X.509 Certificate */
73 #define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 /* PKCS SignedData */
74 #define WIN_CERT_TYPE_RESERVED_1       0x0003 /* Reserved */
75
76 #define SPLITSYM_REMOVE_PRIVATE    0x00000001
77 #define SPLITSYM_EXTRACT_ALL       0x00000002
78 #define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004
79
80 #define FRAME_FPO    0
81 #define FRAME_TRAP   1
82 #define FRAME_TSS    2
83 #define FRAME_NONFPO 3
84
85 #define CHECKSUM_SUCCESS         0
86 #define CHECKSUM_OPEN_FAILURE    1
87 #define CHECKSUM_MAP_FAILURE     2
88 #define CHECKSUM_MAPVIEW_FAILURE 3
89 #define CHECKSUM_UNICODE_FAILURE 4
90
91 typedef enum _ADRESS_MODE {
92   AddrMode1616,
93   AddrMode1632,
94   AddrModeReal,
95   AddrModeFlat
96 } ADDRESS_MODE;
97
98 #define SYMOPT_CASE_INSENSITIVE  0x00000001
99 #define SYMOPT_UNDNAME           0x00000002
100 #define SYMOPT_DEFERRED_LOADS    0x00000004
101 #define SYMOPT_NO_CPP            0x00000008
102 #define SYMOPT_LOAD_LINES        0x00000010
103 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
104
105 #define SYMF_OMAP_GENERATED   0x00000001
106 #define SYMF_OMAP_MODIFIED    0x00000002
107
108 typedef enum {
109   SymNone,
110   SymCoff,
111   SymCv,
112   SymPdb,
113   SymExport,
114   SymDeferred,
115   SymSym        /* .sym file */
116 } SYM_TYPE;
117
118 #define UNDNAME_COMPLETE               0x0000
119 #define UNDNAME_NO_LEADING_UNDERSCORES 0x0001
120 #define UNDNAME_NO_MS_KEYWORDS         0x0002
121 #define UNDNAME_NO_FUNCTION_RETURNS    0x0004
122 #define UNDNAME_NO_ALLOCATION_MODEL    0x0008
123 #define UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010
124 #define UNDNAME_NO_MS_THISTYPE         0x0020
125 #define UNDNAME_NO_CV_THISTYPE         0x0040
126 #define UNDNAME_NO_THISTYPE            0x0060
127 #define UNDNAME_NO_ACCESS_SPECIFIERS   0x0080
128 #define UNDNAME_NO_THROW_SIGNATURES    0x0100
129 #define UNDNAME_NO_MEMBER_TYPE         0x0200
130 #define UNDNAME_NO_RETURN_UDT_MODEL    0x0400
131 #define UNDNAME_32_BIT_DECODE          0x0800
132 #define UNDNAME_NAME_ONLY              0x1000
133 #define UNDNAME_NO_ARGUMENTS           0x2000
134 #define UNDNAME_NO_SPECIAL_SYMS        0x4000
135
136 #define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001
137 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002
138 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003
139 #define CBA_SYMBOLS_UNLOADED                    0x00000004
140 #define CBA_DUPLICATE_SYMBOL                    0x00000005
141
142 /***********************************************************************
143  * Structures
144  */
145
146 typedef struct _LOADED_IMAGE {
147   LPSTR                   ModuleName;
148   HANDLE                hFile;
149   PUCHAR                  MappedAddress;
150   PIMAGE_NT_HEADERS     FileHeader;
151   PIMAGE_SECTION_HEADER LastRvaSection;
152   ULONG                   NumberOfSections;
153   PIMAGE_SECTION_HEADER Sections;
154   ULONG                   Characteristics;
155   BOOLEAN                 fSystemImage;
156   BOOLEAN                 fDOSImage;
157   LIST_ENTRY            Links;
158   ULONG                   SizeOfImage;
159 } LOADED_IMAGE, *PLOADED_IMAGE;
160
161 typedef struct _WIN_CERTIFICATE {
162   DWORD dwLength;
163   WORD  wRevision;                   /*  WIN_CERT_REVISON_xxx */
164   WORD  wCertificateType;            /*  WIN_CERT_TYPE_xxx */
165   BYTE  bCertificate[ANYSIZE_ARRAY];
166 } WIN_CERTIFICATE, *PWIN_CERTIFICATE;
167
168 typedef struct _API_VERSION {
169   USHORT  MajorVersion;
170   USHORT  MinorVersion;
171   USHORT  Revision;
172   USHORT  Reserved;
173 } API_VERSION, *LPAPI_VERSION;
174
175 typedef struct _IMAGE_DEBUG_INFORMATION {
176   LIST_ENTRY List;
177   DWORD        Size;
178   PVOID        MappedBase;
179   USHORT       Machine;
180   USHORT       Characteristics;
181   DWORD        CheckSum;
182   DWORD        ImageBase;
183   DWORD        SizeOfImage;
184
185   DWORD NumberOfSections;
186   PIMAGE_SECTION_HEADER Sections;
187
188   DWORD ExportedNamesSize;
189   LPSTR ExportedNames;
190
191   DWORD NumberOfFunctionTableEntries;
192   PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
193   DWORD LowestFunctionStartingAddress;
194   DWORD HighestFunctionEndingAddress;
195
196   DWORD NumberOfFpoTableEntries;
197   PFPO_DATA FpoTableEntries;
198
199   DWORD SizeOfCoffSymbols;
200   PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
201
202   DWORD SizeOfCodeViewSymbols;
203   PVOID CodeViewSymbols;
204
205   LPSTR ImageFilePath;
206   LPSTR ImageFileName;
207   LPSTR DebugFilePath;
208
209   DWORD TimeDateStamp;
210
211   BOOL RomImage;
212   PIMAGE_DEBUG_DIRECTORY DebugDirectory;
213   DWORD  NumberOfDebugDirectories;
214
215   DWORD Reserved[3];
216 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
217
218 typedef struct _ADDRESS {
219     DWORD          Offset;
220     WORD           Segment;
221     ADDRESS_MODE Mode;
222 } ADDRESS, *PADDRESS;
223
224 typedef struct _KDHELP {
225   DWORD Thread;
226   DWORD ThCallbackStack;
227   DWORD NextCallback;
228   DWORD FramePointer;
229   DWORD KiCallUserMode;
230   DWORD KeUserCallbackDispatcher;
231   DWORD SystemRangeStart;
232 } KDHELP, *PKDHELP;
233
234 typedef struct _STACKFRAME {
235   ADDRESS AddrPC;
236   ADDRESS AddrReturn;
237   ADDRESS AddrFrame;
238   ADDRESS AddrStack;
239   PVOID     FuncTableEntry;
240   DWORD     Params[4];
241   BOOL    Far;
242   BOOL    Virtual;
243   DWORD     Reserved[3];
244   KDHELP  KdHelp;
245 } STACKFRAME, *LPSTACKFRAME;
246
247 typedef struct _IMAGEHLP_SYMBOL {
248   DWORD SizeOfStruct;
249   DWORD Address;
250   DWORD Size;
251   DWORD Flags;
252   DWORD MaxNameLength;
253   CHAR  Name[ANYSIZE_ARRAY];
254 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
255
256 typedef struct _IMAGEHLP_MODULE {
257   DWORD      SizeOfStruct;
258   DWORD      BaseOfImage;
259   DWORD      ImageSize;
260   DWORD      TimeDateStamp;
261   DWORD      CheckSum;
262   DWORD      NumSyms;
263   SYM_TYPE   SymType;
264   CHAR       ModuleName[32];
265   CHAR       ImageName[256];
266   CHAR       LoadedImageName[256];
267 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
268
269 typedef struct _IMAGEHLP_LINE {
270   DWORD SizeOfStruct;
271   DWORD Key;
272   DWORD LineNumber;
273   PCHAR FileName;
274   DWORD Address;
275 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
276
277 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
278   DWORD   SizeOfStruct;
279   DWORD   BaseOfImage;
280   DWORD   CheckSum;
281   DWORD   TimeDateStamp;
282   CHAR    FileName[MAX_PATH];
283   BOOLEAN Reparse;
284 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
285
286 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
287   DWORD              SizeOfStruct;
288   DWORD              NumberOfDups;
289   PIMAGEHLP_SYMBOL Symbol;
290   ULONG              SelectedSymbol;
291 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
292
293 /***********************************************************************
294  * Callbacks
295  */
296
297 typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)(
298   IMAGEHLP_STATUS_REASON Reason, LPSTR ImageName, LPSTR DllName,
299   ULONG Va, ULONG Parameter
300 );
301
302 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
303   LPSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
304 );
305
306 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
307   LPSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize,
308   PVOID UserContext
309 );
310
311 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
312   LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
313   PVOID UserContext
314 );
315
316 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
317   HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
318   PVOID UserContext
319 );
320
321 typedef BOOL (CALLBACK *DIGEST_FUNCTION)(
322   DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength
323 );
324
325 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
326   HANDLE  hProcess, LPCVOID lpBaseAddress, PVOID lpBuffer,
327   DWORD nSize, PDWORD lpNumberOfBytesRead
328 );
329
330 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
331   HANDLE hProcess, DWORD AddrBase
332 );
333
334 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
335   HANDLE hProcess, DWORD ReturnAddress);
336
337 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
338   HANDLE hProcess, HANDLE hThread, PADDRESS lpaddr
339 );
340
341 /***********************************************************************
342  * Functions
343  */
344
345 BOOL WINAPI BindImage(
346   LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath
347 );
348 BOOL WINAPI BindImageEx(
349   DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
350   PIMAGEHLP_STATUS_ROUTINE StatusRoutine
351 );
352 PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
353   LPVOID BaseAddress, DWORD FileLength,
354   LPDWORD HeaderSum, LPDWORD CheckSum
355 );
356 BOOL WINAPI EnumerateLoadedModules(
357   HANDLE hProcess,
358   PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
359   PVOID UserContext
360 );
361 HANDLE WINAPI FindDebugInfoFile(
362   LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath
363 );
364 HANDLE WINAPI FindExecutableImage(
365   LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath
366 );
367 BOOL WINAPI GetImageConfigInformation(
368   PLOADED_IMAGE LoadedImage,
369   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
370 );
371 DWORD WINAPI GetImageUnusedHeaderBytes(
372   PLOADED_IMAGE LoadedImage,
373   LPDWORD SizeUnusedHeaderBytes
374 );
375 DWORD WINAPI GetTimestampForLoadedLibrary(
376   HMODULE Module
377 );
378 BOOL WINAPI ImageAddCertificate(
379   HANDLE FileHandle, PWIN_CERTIFICATE Certificate, PDWORD Index
380 );
381 PVOID WINAPI ImageDirectoryEntryToData(
382   PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
383 );
384 BOOL WINAPI ImageEnumerateCertificates(
385   HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
386   PDWORD Indices, DWORD IndexCount
387 );
388 BOOL WINAPI ImageGetCertificateData(
389   HANDLE FileHandle, DWORD CertificateIndex,
390   PWIN_CERTIFICATE Certificate, PDWORD RequiredLength
391 );
392 BOOL WINAPI ImageGetCertificateHeader(
393   HANDLE FileHandle, DWORD CertificateIndex,
394   PWIN_CERTIFICATE Certificateheader
395 );
396 BOOL WINAPI ImageGetDigestStream(
397   HANDLE FileHandle, DWORD DigestLevel,
398   DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle
399 );
400 PLOADED_IMAGE WINAPI ImageLoad(
401   LPSTR DllName, LPSTR DllPath
402 );
403 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
404   PVOID Base
405 );
406 BOOL WINAPI ImageRemoveCertificate(
407   HANDLE FileHandle, DWORD Index
408 );
409 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
410   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva
411 );
412 PVOID WINAPI ImageRvaToVa(
413   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
414   PIMAGE_SECTION_HEADER *LastRvaSection
415 );
416 BOOL WINAPI ImageUnload(
417   PLOADED_IMAGE LoadedImage
418 );
419 LPAPI_VERSION WINAPI ImagehlpApiVersion(
420   void
421 );
422 LPAPI_VERSION WINAPI ImagehlpApiVersionEx(
423   LPAPI_VERSION AppVersion
424 );
425 BOOL WINAPI MakeSureDirectoryPathExists(
426   LPCSTR DirPath
427 );
428 BOOL WINAPI MapAndLoad(
429   LPSTR ImageName, LPSTR DllPath, PLOADED_IMAGE LoadedImage,
430   BOOL DotDll, BOOL ReadOnly
431 );
432 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
433   HANDLE FileHandle, LPSTR FileName,
434   LPSTR SymbolPath, DWORD ImageBase
435 );
436 DWORD WINAPI MapFileAndCheckSumA(
437   LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
438 );
439 DWORD WINAPI MapFileAndCheckSumW(
440   LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
441 );
442 BOOL WINAPI ReBaseImage(
443   LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
444   BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
445   ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
446   ULONG *NewImageBase, ULONG TimeStamp
447 );
448 BOOL WINAPI RemovePrivateCvSymbolic(
449   PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
450 );
451 VOID WINAPI RemoveRelocations(
452   PCHAR ImageName
453 );
454 BOOL WINAPI SearchTreeForFile(
455   LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer
456 );
457 BOOL WINAPI SetImageConfigInformation(
458   PLOADED_IMAGE LoadedImage,
459   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
460 );
461 BOOL WINAPI SplitSymbols(
462   LPSTR ImageName, LPSTR SymbolsPath,
463   LPSTR SymbolFilePath, DWORD Flags
464 );
465 BOOL WINAPI StackWalk(
466   DWORD MachineType, HANDLE hProcess, HANDLE hThread,
467   LPSTACKFRAME StackFrame, PVOID ContextRecord,
468   PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
469   PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
470   PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
471   PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
472 );
473 BOOL WINAPI SymCleanup(
474   HANDLE hProcess
475 );
476 BOOL WINAPI SymEnumerateModules(
477   HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
478   PVOID UserContext
479 );
480 BOOL WINAPI SymEnumerateSymbols(
481   HANDLE hProcess, DWORD BaseOfDll,
482   PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
483 );
484 PVOID WINAPI SymFunctionTableAccess(
485   HANDLE hProcess, DWORD AddrBase
486 );
487 DWORD WINAPI SymGetModuleBase(
488   HANDLE hProcess, DWORD dwAddr
489 );
490 BOOL WINAPI SymGetModuleInfo(
491   HANDLE hProcess, DWORD dwAddr,
492   PIMAGEHLP_MODULE ModuleInfo
493 );
494 DWORD WINAPI SymGetOptions(
495   void
496 );
497 BOOL WINAPI SymGetSearchPath(
498   HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength
499 );
500 BOOL WINAPI SymGetSymFromAddr(
501   HANDLE hProcess, DWORD dwAddr,
502   PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol
503 );
504 BOOL WINAPI SymGetSymFromName(
505   HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol
506 );
507 BOOL WINAPI SymGetSymNext(
508   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
509 );
510 BOOL WINAPI SymGetSymPrev(
511   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
512 );
513 BOOL WINAPI SymInitialize(
514   HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess
515 );
516 BOOL WINAPI SymLoadModule(
517   HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
518   DWORD BaseOfDll, DWORD SizeOfDll
519 );
520 BOOL WINAPI SymRegisterCallback(
521   HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
522   PVOID UserContext
523 );
524 DWORD WINAPI SymSetOptions(
525   DWORD SymOptions
526 );
527 BOOL WINAPI SymSetSearchPath(
528   HANDLE hProcess, LPSTR szSearchPath
529 );
530 BOOL WINAPI SymUnDName(
531   PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength
532 );
533 BOOL WINAPI SymUnloadModule(
534   HANDLE hProcess, DWORD BaseOfDll
535 );
536 BOOL WINAPI TouchFileTimes(
537   HANDLE FileHandle, LPSYSTEMTIME lpSystemTime
538 );
539 DWORD WINAPI UnDecorateSymbolName(
540   LPCSTR DecoratedName, LPSTR UnDecoratedName,
541   DWORD UndecoratedLength, DWORD Flags
542 );
543 BOOL WINAPI UnMapAndLoad(
544   PLOADED_IMAGE LoadedImage
545 );
546 BOOL WINAPI UnmapDebugInformation(
547   PIMAGE_DEBUG_INFORMATION DebugInfo
548 );
549 BOOL WINAPI UpdateDebugInfoFile(
550   LPSTR ImageFileName, LPSTR SymbolPath,
551   LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders
552 );
553 BOOL WINAPI UpdateDebugInfoFileEx(
554   LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
555   PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum
556 );
557
558 #ifdef __cplusplus
559 } /* extern "C" */
560 #endif /* defined(__cplusplus) */
561
562 #endif  /* __WINE_IMAGEHLP_H */