wininet: Don't duplicate empty strings.
[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 #include <wintrust.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* defined(__cplusplus) */
29
30 #define API_VERSION_NUMBER 7            /* 7 is the default */
31
32 /***********************************************************************
33  * Types
34  */
35
36 typedef PVOID DIGEST_HANDLE;
37
38 /***********************************************************************
39  * Enums/Defines
40  */
41
42 typedef enum _IMAGEHLP_STATUS_REASON {
43   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
57 } IMAGEHLP_STATUS_REASON;
58
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
82 #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
93 typedef enum _ADRESS_MODE {
94   AddrMode1616,
95   AddrMode1632,
96   AddrModeReal,
97   AddrModeFlat
98 } ADDRESS_MODE;
99
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
109 /* 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
119
120 typedef enum {
121   SymNone,
122   SymCoff,
123   SymCv,
124   SymPdb,
125   SymExport,
126   SymDeferred,
127   SymSym,
128   SymDia,
129   SymVirtual,
130   NumSymTypes
131 } SYM_TYPE;
132
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
157 /***********************************************************************
158  * Structures
159  */
160
161 typedef struct _LOADED_IMAGE {
162   LPSTR                   ModuleName;
163   HANDLE                hFile;
164   PUCHAR                  MappedAddress;
165   PIMAGE_NT_HEADERS     FileHeader;
166   PIMAGE_SECTION_HEADER LastRvaSection;
167   ULONG                   NumberOfSections;
168   PIMAGE_SECTION_HEADER Sections;
169   ULONG                   Characteristics;
170   BOOLEAN                 fSystemImage;
171   BOOLEAN                 fDOSImage;
172   LIST_ENTRY            Links;
173   ULONG                   SizeOfImage;
174 } LOADED_IMAGE, *PLOADED_IMAGE;
175
176 typedef struct _WIN_CERTIFICATE {
177   DWORD dwLength;
178   WORD  wRevision;                   /*  WIN_CERT_REVISON_xxx */
179   WORD  wCertificateType;            /*  WIN_CERT_TYPE_xxx */
180   BYTE  bCertificate[ANYSIZE_ARRAY];
181 } WIN_CERTIFICATE, *PWIN_CERTIFICATE;
182
183 typedef struct _API_VERSION {
184   USHORT  MajorVersion;
185   USHORT  MinorVersion;
186   USHORT  Revision;
187   USHORT  Reserved;
188 } API_VERSION, *LPAPI_VERSION;
189
190 typedef struct _IMAGE_DEBUG_INFORMATION {
191   LIST_ENTRY List;
192   DWORD        Size;
193   PVOID        MappedBase;
194   USHORT       Machine;
195   USHORT       Characteristics;
196   DWORD        CheckSum;
197   DWORD        ImageBase;
198   DWORD        SizeOfImage;
199
200   DWORD NumberOfSections;
201   PIMAGE_SECTION_HEADER Sections;
202
203   DWORD ExportedNamesSize;
204   LPSTR ExportedNames;
205
206   DWORD NumberOfFunctionTableEntries;
207   PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
208   DWORD LowestFunctionStartingAddress;
209   DWORD HighestFunctionEndingAddress;
210
211   DWORD NumberOfFpoTableEntries;
212   PFPO_DATA FpoTableEntries;
213
214   DWORD SizeOfCoffSymbols;
215   PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
216
217   DWORD SizeOfCodeViewSymbols;
218   PVOID CodeViewSymbols;
219
220   LPSTR ImageFilePath;
221   LPSTR ImageFileName;
222   LPSTR DebugFilePath;
223
224   DWORD TimeDateStamp;
225
226   BOOL RomImage;
227   PIMAGE_DEBUG_DIRECTORY DebugDirectory;
228   DWORD  NumberOfDebugDirectories;
229
230   DWORD Reserved[3];
231 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
232
233 typedef struct _ADDRESS {
234     DWORD          Offset;
235     WORD           Segment;
236     ADDRESS_MODE Mode;
237 } ADDRESS, *PADDRESS;
238
239 typedef struct _ADDRESS64 {
240     DWORD64        Offset;
241     WORD           Segment;
242     ADDRESS_MODE   Mode;
243 } ADDRESS64, *LPADDRESS64;
244
245 typedef struct _KDHELP {
246   DWORD Thread;
247   DWORD ThCallbackStack;
248   DWORD NextCallback;
249   DWORD FramePointer;
250   DWORD KiCallUserMode;
251   DWORD KeUserCallbackDispatcher;
252   DWORD SystemRangeStart;
253 } KDHELP, *PKDHELP;
254
255 typedef 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
267 typedef struct _STACKFRAME {
268   ADDRESS AddrPC;
269   ADDRESS AddrReturn;
270   ADDRESS AddrFrame;
271   ADDRESS AddrStack;
272   PVOID     FuncTableEntry;
273   DWORD     Params[4];
274   BOOL    Far;
275   BOOL    Virtual;
276   DWORD     Reserved[3];
277   KDHELP  KdHelp;
278 } STACKFRAME, *LPSTACKFRAME;
279
280 typedef 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
294 typedef struct _SOURCEFILE {
295     DWORD64                     ModBase;
296     PCHAR                       FileName;
297 } SOURCEFILE, *PSOURCEFILE;
298
299 typedef 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
313 typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
314
315 typedef struct _IMAGEHLP_SYMBOL {
316   DWORD SizeOfStruct;
317   DWORD Address;
318   DWORD Size;
319   DWORD Flags;
320   DWORD MaxNameLength;
321   CHAR  Name[ANYSIZE_ARRAY];
322 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
323
324 typedef struct _IMAGEHLP_MODULE {
325   DWORD      SizeOfStruct;
326   DWORD      BaseOfImage;
327   DWORD      ImageSize;
328   DWORD      TimeDateStamp;
329   DWORD      CheckSum;
330   DWORD      NumSyms;
331   SYM_TYPE   SymType;
332   CHAR       ModuleName[32];
333   CHAR       ImageName[256];
334   CHAR       LoadedImageName[256];
335 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
336
337 typedef struct _IMAGEHLP_LINE {
338   DWORD SizeOfStruct;
339   DWORD Key;
340   DWORD LineNumber;
341   PCHAR FileName;
342   DWORD Address;
343 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
344
345 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
346   DWORD   SizeOfStruct;
347   DWORD   BaseOfImage;
348   DWORD   CheckSum;
349   DWORD   TimeDateStamp;
350   CHAR    FileName[MAX_PATH];
351   BOOLEAN Reparse;
352 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
353
354 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
355   DWORD              SizeOfStruct;
356   DWORD              NumberOfDups;
357   PIMAGEHLP_SYMBOL Symbol;
358   ULONG              SelectedSymbol;
359 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
360
361 #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
370 typedef 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
388 /***********************************************************************
389  * Callbacks
390  */
391
392 typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)(
393   IMAGEHLP_STATUS_REASON Reason, LPSTR ImageName, LPSTR DllName,
394   ULONG Va, ULONG Parameter
395 );
396
397 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
398   PSYMBOL_INFO pSymInfo, DWORD SymbolSize, PVOID UserContext
399 );
400
401 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(
402   PSOURCEFILE pSourceFile, PVOID UserContext
403 );
404
405 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
406   LPSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
407 );
408
409 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
410   LPSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize,
411   PVOID UserContext
412 );
413
414 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
415   LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
416   PVOID UserContext
417 );
418
419 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
420   HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
421   PVOID UserContext
422 );
423
424 typedef BOOL (CALLBACK *DIGEST_FUNCTION)(
425   DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength
426 );
427
428 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
429   HANDLE  hProcess, LPCVOID lpBaseAddress, PVOID lpBuffer,
430   DWORD nSize, PDWORD lpNumberOfBytesRead
431 );
432
433 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)(
434   HANDLE  hProcess, DWORD64 lpBaseAddress, PVOID lpBuffer,
435   DWORD nSize, LPDWORD lpNumberOfBytesRead
436 );
437
438 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
439   HANDLE hProcess, DWORD AddrBase
440 );
441
442 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
443   HANDLE hProcess, DWORD64 AddrBase
444 );
445
446 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
447   HANDLE hProcess, DWORD ReturnAddress);
448
449 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(
450   HANDLE hProcess, DWORD64 ReturnAddress);
451
452 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
453   HANDLE hProcess, HANDLE hThread, PADDRESS lpaddr
454 );
455
456 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(
457   HANDLE hProcess, HANDLE hThread, LPADDRESS64 lpaddr
458 );
459
460 /***********************************************************************
461  * Functions
462  */
463
464 BOOL WINAPI BindImage(
465   LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath
466 );
467 BOOL WINAPI BindImageEx(
468   DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
469   PIMAGEHLP_STATUS_ROUTINE StatusRoutine
470 );
471 PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
472   LPVOID BaseAddress, DWORD FileLength,
473   LPDWORD HeaderSum, LPDWORD CheckSum
474 );
475 BOOL WINAPI EnumerateLoadedModules(
476   HANDLE hProcess,
477   PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
478   PVOID UserContext
479 );
480 HANDLE WINAPI FindDebugInfoFile(
481   LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath
482 );
483 HANDLE WINAPI FindExecutableImage(
484   LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath
485 );
486 BOOL WINAPI GetImageConfigInformation(
487   PLOADED_IMAGE LoadedImage,
488   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
489 );
490 DWORD WINAPI GetImageUnusedHeaderBytes(
491   PLOADED_IMAGE LoadedImage,
492   LPDWORD SizeUnusedHeaderBytes
493 );
494 DWORD WINAPI GetTimestampForLoadedLibrary(
495   HMODULE Module
496 );
497 BOOL WINAPI ImageAddCertificate(
498   HANDLE FileHandle, PWIN_CERTIFICATE Certificate, PDWORD Index
499 );
500 PVOID WINAPI ImageDirectoryEntryToData(
501   PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
502 );
503 BOOL WINAPI ImageEnumerateCertificates(
504   HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
505   PDWORD Indices, DWORD IndexCount
506 );
507 BOOL WINAPI ImageGetCertificateData(
508   HANDLE FileHandle, DWORD CertificateIndex,
509   PWIN_CERTIFICATE Certificate, PDWORD RequiredLength
510 );
511 BOOL WINAPI ImageGetCertificateHeader(
512   HANDLE FileHandle, DWORD CertificateIndex,
513   PWIN_CERTIFICATE Certificateheader
514 );
515 BOOL WINAPI ImageGetDigestStream(
516   HANDLE FileHandle, DWORD DigestLevel,
517   DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle
518 );
519 PLOADED_IMAGE WINAPI ImageLoad(
520   LPSTR DllName, LPSTR DllPath
521 );
522 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
523   PVOID Base
524 );
525 BOOL WINAPI ImageRemoveCertificate(
526   HANDLE FileHandle, DWORD Index
527 );
528 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
529   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva
530 );
531 PVOID WINAPI ImageRvaToVa(
532   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
533   PIMAGE_SECTION_HEADER *LastRvaSection
534 );
535 BOOL WINAPI ImageUnload(
536   PLOADED_IMAGE LoadedImage
537 );
538 LPAPI_VERSION WINAPI ImagehlpApiVersion(
539   void
540 );
541 LPAPI_VERSION WINAPI ImagehlpApiVersionEx(
542   LPAPI_VERSION AppVersion
543 );
544 BOOL WINAPI MakeSureDirectoryPathExists(
545   LPCSTR DirPath
546 );
547 BOOL WINAPI MapAndLoad(
548   LPSTR ImageName, LPSTR DllPath, PLOADED_IMAGE LoadedImage,
549   BOOL DotDll, BOOL ReadOnly
550 );
551 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
552   HANDLE FileHandle, LPSTR FileName,
553   LPSTR SymbolPath, DWORD ImageBase
554 );
555 DWORD WINAPI MapFileAndCheckSumA(
556   LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
557 );
558 DWORD WINAPI MapFileAndCheckSumW(
559   LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
560 );
561 BOOL WINAPI ReBaseImage(
562   LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
563   BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
564   ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
565   ULONG *NewImageBase, ULONG TimeStamp
566 );
567 BOOL WINAPI RemovePrivateCvSymbolic(
568   PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
569 );
570 VOID WINAPI RemoveRelocations(
571   PCHAR ImageName
572 );
573 BOOL WINAPI SearchTreeForFile(
574   LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer
575 );
576 BOOL WINAPI SetImageConfigInformation(
577   PLOADED_IMAGE LoadedImage,
578   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
579 );
580 BOOL WINAPI SplitSymbols(
581   LPSTR ImageName, LPSTR SymbolsPath,
582   LPSTR SymbolFilePath, DWORD Flags
583 );
584 BOOL WINAPI StackWalk(
585   DWORD MachineType, HANDLE hProcess, HANDLE hThread,
586   LPSTACKFRAME StackFrame, PVOID ContextRecord,
587   PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
588   PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
589   PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
590   PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
591 );
592 BOOL 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 );
600 BOOL WINAPI SymCleanup(
601   HANDLE hProcess
602 );
603 BOOL WINAPI SymEnumerateModules(
604   HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
605   PVOID UserContext
606 );
607 BOOL WINAPI SymEnumerateSymbols(
608   HANDLE hProcess, DWORD BaseOfDll,
609   PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
610 );
611 BOOL WINAPI SymEnumSourceFiles(
612   HANDLE hProcess, DWORD ModBase, LPSTR Mask,
613   PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles, PVOID UserContext
614 );
615 BOOL WINAPI SymEnumSymbols(
616   HANDLE hProcess, DWORD BaseOfDll, PCSTR Mask, 
617   PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
618 );
619 PVOID WINAPI SymFunctionTableAccess(
620   HANDLE hProcess, DWORD AddrBase
621 );
622 DWORD WINAPI SymGetModuleBase(
623   HANDLE hProcess, DWORD dwAddr
624 );
625 BOOL WINAPI SymGetModuleInfo(
626   HANDLE hProcess, DWORD dwAddr,
627   PIMAGEHLP_MODULE ModuleInfo
628 );
629 DWORD WINAPI SymGetOptions(
630   void
631 );
632 BOOL WINAPI SymGetSearchPath(
633   HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength
634 );
635 BOOL WINAPI SymGetSymFromAddr(
636   HANDLE hProcess, DWORD dwAddr,
637   PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol
638 );
639 BOOL WINAPI SymGetSymFromName(
640   HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol
641 );
642 BOOL WINAPI SymGetSymNext(
643   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
644 );
645 BOOL WINAPI SymGetSymPrev(
646   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
647 );
648 BOOL WINAPI SymInitialize(
649   HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess
650 );
651 DWORD WINAPI SymLoadModule(
652   HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
653   DWORD BaseOfDll, DWORD SizeOfDll
654 );
655 BOOL WINAPI SymRegisterCallback(
656   HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
657   PVOID UserContext
658 );
659 DWORD WINAPI SymSetContext(
660   HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame, 
661   PIMAGEHLP_CONTEXT Context
662 );
663 DWORD WINAPI SymSetOptions(
664   DWORD SymOptions
665 );
666 BOOL WINAPI SymSetSearchPath(
667   HANDLE hProcess, LPSTR szSearchPath
668 );
669 BOOL WINAPI SymUnDName(
670   PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength
671 );
672 BOOL WINAPI SymUnloadModule(
673   HANDLE hProcess, DWORD BaseOfDll
674 );
675 BOOL WINAPI TouchFileTimes(
676   HANDLE FileHandle, LPSYSTEMTIME lpSystemTime
677 );
678 DWORD WINAPI UnDecorateSymbolName(
679   LPCSTR DecoratedName, LPSTR UnDecoratedName,
680   DWORD UndecoratedLength, DWORD Flags
681 );
682 BOOL WINAPI UnMapAndLoad(
683   PLOADED_IMAGE LoadedImage
684 );
685 BOOL WINAPI UnmapDebugInformation(
686   PIMAGE_DEBUG_INFORMATION DebugInfo
687 );
688 BOOL WINAPI UpdateDebugInfoFile(
689   LPSTR ImageFileName, LPSTR SymbolPath,
690   LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders
691 );
692 BOOL WINAPI UpdateDebugInfoFileEx(
693   LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
694   PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum
695 );
696
697 #ifdef __cplusplus
698 } /* extern "C" */
699 #endif /* defined(__cplusplus) */
700
701 #endif  /* __WINE_IMAGEHLP_H */