msi: Forward MsiSourceListEnumSourcesA to a stub implementation of MsiSourceListEnumS...
[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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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 IMAGEAPI WINAPI
31 #define DBHLPAPI IMAGEAPI
32
33 #define API_VERSION_NUMBER 7            /* 7 is the default */
34
35 /***********************************************************************
36  * Types
37  */
38
39 typedef PVOID DIGEST_HANDLE;
40
41 /***********************************************************************
42  * Enums/Defines
43  */
44
45 typedef enum _IMAGEHLP_STATUS_REASON {
46   BindOutOfMemory,
47   BindRvaToVaFailed,
48   BindNoRoomInImage,
49   BindImportModuleFailed,
50   BindImportProcedureFailed,
51   BindImportModule,
52   BindImportProcedure,
53   BindForwarder,
54   BindForwarderNOT,
55   BindImageModified,
56   BindExpandFileHeaders,
57   BindImageComplete,
58   BindMismatchedSymbols,
59   BindSymbolsNotUpdated
60 } IMAGEHLP_STATUS_REASON;
61
62 #define BIND_NO_BOUND_IMPORTS  0x00000001
63 #define BIND_NO_UPDATE         0x00000002
64 #define BIND_ALL_IMAGES        0x00000004
65 #define BIND_CACHE_IMPORT_DLLS 0x00000008
66
67 #define CERT_PE_IMAGE_DIGEST_DEBUG_INFO      0x01
68 #define CERT_PE_IMAGE_DIGEST_RESOURCES       0x02
69 #define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
70 #define CERT_PE_IMAGE_DIGEST_NON_PE_INFO     0x08
71
72 #define CERT_SECTION_TYPE_ANY 0xFF
73
74 #define SPLITSYM_REMOVE_PRIVATE    0x00000001
75 #define SPLITSYM_EXTRACT_ALL       0x00000002
76 #define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004
77
78 #define FRAME_FPO    0
79 #define FRAME_TRAP   1
80 #define FRAME_TSS    2
81 #define FRAME_NONFPO 3
82
83 #define CHECKSUM_SUCCESS         0
84 #define CHECKSUM_OPEN_FAILURE    1
85 #define CHECKSUM_MAP_FAILURE     2
86 #define CHECKSUM_MAPVIEW_FAILURE 3
87 #define CHECKSUM_UNICODE_FAILURE 4
88
89 typedef enum _ADDRESS_MODE {
90   AddrMode1616,
91   AddrMode1632,
92   AddrModeReal,
93   AddrModeFlat
94 } ADDRESS_MODE;
95
96 #define SYMOPT_CASE_INSENSITIVE  0x00000001
97 #define SYMOPT_UNDNAME           0x00000002
98 #define SYMOPT_DEFERRED_LOADS    0x00000004
99 #define SYMOPT_NO_CPP            0x00000008
100 #define SYMOPT_LOAD_LINES        0x00000010
101 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
102
103 #define SYMF_OMAP_GENERATED   0x00000001
104 #define SYMF_OMAP_MODIFIED    0x00000002
105 /* 0x00000004 has been obsoleted */
106 #define SYMF_REGISTER         0x00000008
107 #define SYMF_REGREL           0x00000010
108 #define SYMF_FRAMEREL         0x00000020
109 #define SYMF_PARAMETER        0x00000040
110 #define SYMF_LOCAL            0x00000080
111 #define SYMF_CONSTANT         0x00000100
112 #define SYMF_EXPORT           0x00000200
113 #define SYMF_FORWARDER        0x00000400
114 #define SYMF_FUNCTION         0x00000800
115
116 typedef enum {
117   SymNone,
118   SymCoff,
119   SymCv,
120   SymPdb,
121   SymExport,
122   SymDeferred,
123   SymSym,
124   SymDia,
125   SymVirtual,
126   NumSymTypes
127 } SYM_TYPE;
128
129 #define UNDNAME_COMPLETE               0x0000
130 #define UNDNAME_NO_LEADING_UNDERSCORES 0x0001
131 #define UNDNAME_NO_MS_KEYWORDS         0x0002
132 #define UNDNAME_NO_FUNCTION_RETURNS    0x0004
133 #define UNDNAME_NO_ALLOCATION_MODEL    0x0008
134 #define UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010
135 #define UNDNAME_NO_MS_THISTYPE         0x0020
136 #define UNDNAME_NO_CV_THISTYPE         0x0040
137 #define UNDNAME_NO_THISTYPE            0x0060
138 #define UNDNAME_NO_ACCESS_SPECIFIERS   0x0080
139 #define UNDNAME_NO_THROW_SIGNATURES    0x0100
140 #define UNDNAME_NO_MEMBER_TYPE         0x0200
141 #define UNDNAME_NO_RETURN_UDT_MODEL    0x0400
142 #define UNDNAME_32_BIT_DECODE          0x0800
143 #define UNDNAME_NAME_ONLY              0x1000
144 #define UNDNAME_NO_ARGUMENTS           0x2000
145 #define UNDNAME_NO_SPECIAL_SYMS        0x4000
146
147 #define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001
148 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002
149 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003
150 #define CBA_SYMBOLS_UNLOADED                    0x00000004
151 #define CBA_DUPLICATE_SYMBOL                    0x00000005
152
153 /***********************************************************************
154  * Structures
155  */
156
157 typedef struct _LOADED_IMAGE
158 {
159     PSTR                        ModuleName;
160     HANDLE                      hFile;
161     PUCHAR                      MappedAddress;
162     PIMAGE_NT_HEADERS           FileHeader;
163     PIMAGE_SECTION_HEADER       LastRvaSection;
164     ULONG                       NumberOfSections;
165     PIMAGE_SECTION_HEADER       Sections;
166     ULONG                       Characteristics;
167     BOOLEAN                     fSystemImage;
168     BOOLEAN                     fDOSImage;
169     BOOLEAN                     fReadOnly;
170     UCHAR                       Version;
171     LIST_ENTRY                  Links;
172     ULONG                       SizeOfImage;
173 } LOADED_IMAGE, *PLOADED_IMAGE;
174
175 typedef struct _API_VERSION {
176   USHORT  MajorVersion;
177   USHORT  MinorVersion;
178   USHORT  Revision;
179   USHORT  Reserved;
180 } API_VERSION, *LPAPI_VERSION;
181
182 typedef struct _IMAGE_DEBUG_INFORMATION {
183   LIST_ENTRY List;
184   DWORD        Size;
185   PVOID        MappedBase;
186   USHORT       Machine;
187   USHORT       Characteristics;
188   DWORD        CheckSum;
189   DWORD        ImageBase;
190   DWORD        SizeOfImage;
191
192   DWORD NumberOfSections;
193   PIMAGE_SECTION_HEADER Sections;
194
195   DWORD ExportedNamesSize;
196   PSTR ExportedNames;
197
198   DWORD NumberOfFunctionTableEntries;
199   PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
200   DWORD LowestFunctionStartingAddress;
201   DWORD HighestFunctionEndingAddress;
202
203   DWORD NumberOfFpoTableEntries;
204   PFPO_DATA FpoTableEntries;
205
206   DWORD SizeOfCoffSymbols;
207   PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
208
209   DWORD SizeOfCodeViewSymbols;
210   PVOID CodeViewSymbols;
211
212   PSTR ImageFilePath;
213   PSTR ImageFileName;
214   PSTR DebugFilePath;
215
216   DWORD TimeDateStamp;
217
218   BOOL RomImage;
219   PIMAGE_DEBUG_DIRECTORY DebugDirectory;
220   DWORD  NumberOfDebugDirectories;
221
222   DWORD Reserved[3];
223 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
224
225 typedef struct _ADDRESS {
226     DWORD          Offset;
227     WORD           Segment;
228     ADDRESS_MODE Mode;
229 } ADDRESS, *LPADDRESS;
230
231 typedef struct _ADDRESS64 {
232     DWORD64        Offset;
233     WORD           Segment;
234     ADDRESS_MODE   Mode;
235 } ADDRESS64, *LPADDRESS64;
236
237 typedef struct _KDHELP {
238   DWORD Thread;
239   DWORD ThCallbackStack;
240   DWORD NextCallback;
241   DWORD FramePointer;
242   DWORD KiCallUserMode;
243   DWORD KeUserCallbackDispatcher;
244   DWORD SystemRangeStart;
245 } KDHELP, *PKDHELP;
246
247 typedef struct _KDHELP64 {
248     DWORD64 Thread;
249     DWORD   ThCallbackStack;
250     DWORD   ThCallbackBStore;
251     DWORD   NextCallback;
252     DWORD   FramePointer;
253     DWORD64 KiCallUserMode;
254     DWORD64 KeUserCallbackDispatcher;
255     DWORD64 SystemRangeStart;
256     DWORD64 Reserved[8];
257 } KDHELP64, *PKDHELP64;
258
259 typedef struct _STACKFRAME {
260   ADDRESS AddrPC;
261   ADDRESS AddrReturn;
262   ADDRESS AddrFrame;
263   ADDRESS AddrStack;
264   PVOID     FuncTableEntry;
265   DWORD     Params[4];
266   BOOL    Far;
267   BOOL    Virtual;
268   DWORD     Reserved[3];
269   KDHELP  KdHelp;
270 } STACKFRAME, *LPSTACKFRAME;
271
272 typedef struct _STACKFRAME64 {
273     ADDRESS64 AddrPC;
274     ADDRESS64 AddrReturn;
275     ADDRESS64 AddrFrame;
276     ADDRESS64 AddrStack;
277     ADDRESS64 AddrBStore;
278     PVOID     FuncTableEntry;
279     DWORD64   Params[4];
280     BOOL      Far;
281     BOOL      Virtual;
282     DWORD64   Reserved[3];
283     KDHELP64  KdHelp;
284 } STACKFRAME64, *LPSTACKFRAME64;
285
286 typedef struct _SOURCEFILE {
287     DWORD64                     ModBase;
288     PCHAR                       FileName;
289 } SOURCEFILE, *PSOURCEFILE;
290
291 typedef struct _SOURCEFILEW
292 {
293     DWORD64                     ModBase;
294     PWSTR                       FileName;
295 } SOURCEFILEW, *PSOURCEFILEW;
296
297 typedef struct _IMAGEHLP_STACK_FRAME
298 {
299   DWORD InstructionOffset;
300   DWORD ReturnOffset;
301   DWORD FrameOffset;
302   DWORD StackOffset;
303   DWORD BackingStoreOffset;
304   DWORD FuncTableEntry;
305   DWORD Params[4];
306   DWORD Reserved[5];
307   DWORD Virtual;
308   DWORD Reserved2;
309 } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
310
311 typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
312
313 typedef struct _IMAGEHLP_SYMBOL {
314   DWORD SizeOfStruct;
315   DWORD Address;
316   DWORD Size;
317   DWORD Flags;
318   DWORD MaxNameLength;
319   CHAR  Name[ANYSIZE_ARRAY];
320 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
321
322 typedef struct _IMAGEHLP_SYMBOLW {
323   DWORD SizeOfStruct;
324   DWORD Address;
325   DWORD Size;
326   DWORD Flags;
327   DWORD MaxNameLength;
328   WCHAR Name[ANYSIZE_ARRAY];
329 } IMAGEHLP_SYMBOLW, *PIMAGEHLP_SYMBOLW;
330
331 typedef struct _IMAGEHLP_SYMBOL64
332 {
333     DWORD                       SizeOfStruct;
334     DWORD64                     Address;
335     DWORD                       Size;
336     DWORD                       Flags;
337     DWORD                       MaxNameLength;
338     CHAR                        Name[1];
339 } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
340
341 typedef struct _IMAGEHLP_SYMBOLW64
342 {
343     DWORD                       SizeOfStruct;
344     DWORD64                     Address;
345     DWORD                       Size;
346     DWORD                       Flags;
347     DWORD                       MaxNameLength;
348     WCHAR                       Name[1];
349 } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64;
350
351 typedef struct _IMAGEHLP_MODULE {
352   DWORD      SizeOfStruct;
353   DWORD      BaseOfImage;
354   DWORD      ImageSize;
355   DWORD      TimeDateStamp;
356   DWORD      CheckSum;
357   DWORD      NumSyms;
358   SYM_TYPE   SymType;
359   CHAR       ModuleName[32];
360   CHAR       ImageName[256];
361   CHAR       LoadedImageName[256];
362 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
363
364 typedef struct _IMAGEHLP_MODULEW {
365   DWORD      SizeOfStruct;
366   DWORD      BaseOfImage;
367   DWORD      ImageSize;
368   DWORD      TimeDateStamp;
369   DWORD      CheckSum;
370   DWORD      NumSyms;
371   SYM_TYPE   SymType;
372   WCHAR      ModuleName[32];
373   WCHAR      ImageName[256];
374   WCHAR      LoadedImageName[256];
375 } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
376
377 typedef struct _IMAGEHLP_MODULE64
378 {
379     DWORD                       SizeOfStruct;
380     DWORD64                     BaseOfImage;
381     DWORD                       ImageSize;
382     DWORD                       TimeDateStamp;
383     DWORD                       CheckSum;
384     DWORD                       NumSyms;
385     SYM_TYPE                    SymType;
386     CHAR                        ModuleName[32];
387     CHAR                        ImageName[256];
388     CHAR                        LoadedImageName[256];
389     CHAR                        LoadedPdbName[256];
390     DWORD                       CVSig;
391     CHAR                        CVData[MAX_PATH*3];
392     DWORD                       PdbSig;
393     GUID                        PdbSig70;
394     DWORD                       PdbAge;
395     BOOL                        PdbUnmatched;
396     BOOL                        DbgUnmatched;
397     BOOL                        LineNumbers;
398     BOOL                        GlobalSymbols;
399     BOOL                        TypeInfo;
400     BOOL                        SourceIndexed;
401     BOOL                        Publics;
402 } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
403
404 typedef struct _IMAGEHLP_MODULEW64
405 {
406     DWORD                       SizeOfStruct;
407     DWORD64                     BaseOfImage;
408     DWORD                       ImageSize;
409     DWORD                       TimeDateStamp;
410     DWORD                       CheckSum;
411     DWORD                       NumSyms;
412     SYM_TYPE                    SymType;
413     WCHAR                       ModuleName[32];
414     WCHAR                       ImageName[256];
415     WCHAR                       LoadedImageName[256];
416     WCHAR                       LoadedPdbName[256];
417     DWORD                       CVSig;
418     WCHAR                       CVData[MAX_PATH*3];
419     DWORD                       PdbSig;
420     GUID                        PdbSig70;
421     DWORD                       PdbAge;
422     BOOL                        PdbUnmatched;
423     BOOL                        DbgUnmatched;
424     BOOL                        LineNumbers;
425     BOOL                        GlobalSymbols;
426     BOOL                        TypeInfo;
427     BOOL                        SourceIndexed;
428     BOOL                        Publics;
429 } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
430
431 typedef struct _IMAGEHLP_LINE {
432   DWORD SizeOfStruct;
433   PVOID Key;
434   DWORD LineNumber;
435   PCHAR FileName;
436   DWORD Address;
437 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
438
439 typedef struct _IMAGEHLP_LINEW {
440   DWORD SizeOfStruct;
441   PVOID Key;
442   DWORD LineNumber;
443   PWSTR FileName;
444   DWORD Address;
445 } IMAGEHLP_LINEW, *PIMAGEHLP_LINEW;
446
447 typedef struct _IMAGEHLP_LINE64 {
448   DWORD SizeOfStruct;
449   PVOID Key;
450   DWORD LineNumber;
451   PCHAR FileName;
452   DWORD64 Address;
453 } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
454
455 typedef struct _IMAGEHLP_LINEW64 {
456   DWORD SizeOfStruct;
457   PVOID Key;
458   DWORD LineNumber;
459   PWSTR FileName;
460   DWORD64 Address;
461 } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
462
463 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
464   DWORD   SizeOfStruct;
465   DWORD   BaseOfImage;
466   DWORD   CheckSum;
467   DWORD   TimeDateStamp;
468   CHAR    FileName[MAX_PATH];
469   BOOLEAN Reparse;
470 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
471
472 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
473   DWORD              SizeOfStruct;
474   DWORD              NumberOfDups;
475   PIMAGEHLP_SYMBOL Symbol;
476   ULONG              SelectedSymbol;
477 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
478
479 typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO
480 {
481     TI_GET_SYMTAG,
482     TI_GET_SYMNAME,
483     TI_GET_LENGTH,
484     TI_GET_TYPE,
485     TI_GET_TYPEID,
486     TI_GET_BASETYPE,
487     TI_GET_ARRAYINDEXTYPEID,
488     TI_FINDCHILDREN,
489     TI_GET_DATAKIND,
490     TI_GET_ADDRESSOFFSET,
491     TI_GET_OFFSET,
492     TI_GET_VALUE,
493     TI_GET_COUNT,
494     TI_GET_CHILDRENCOUNT,
495     TI_GET_BITPOSITION,
496     TI_GET_VIRTUALBASECLASS,
497     TI_GET_VIRTUALTABLESHAPEID,
498     TI_GET_VIRTUALBASEPOINTEROFFSET,
499     TI_GET_CLASSPARENTID,
500     TI_GET_NESTED,
501     TI_GET_SYMINDEX,
502     TI_GET_LEXICALPARENT,
503     TI_GET_ADDRESS,
504     TI_GET_THISADJUST,
505     TI_GET_UDTKIND,
506     TI_IS_EQUIV_TO,
507     TI_GET_CALLING_CONVENTION,
508 } IMAGEHLP_SYMBOL_TYPE_INFO;
509
510 #define IMAGEHLP_GET_TYPE_INFO_UNCACHED            0x00000001
511 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN            0x00000002
512 typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS
513 {
514     ULONG       SizeOfStruct;
515     ULONG       Flags;
516     ULONG       NumIds;
517     PULONG      TypeIds;
518     ULONG64     TagFilter;
519     ULONG       NumReqs;
520     IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds;
521     PULONG_PTR  ReqOffsets;
522     PULONG      ReqSizes;
523     ULONG_PTR   ReqStride;
524     ULONG_PTR   BufferSize;
525     PVOID       Buffer;
526     ULONG       EntriesMatched;
527     ULONG       EntriesFilled;
528     ULONG64     TagsFound;
529     ULONG64     AllReqsValid;
530     ULONG       NumReqsValid;
531     PULONG64    ReqsValid;
532 } IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS;
533
534 #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT          1
535 #define IMAGEHLP_SYMBOL_INFO_REGISTER              SYMF_REGISTER
536 #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE           SYMF_REGREL
537 #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE         SYMF_FRAMEREL
538 #define IMAGEHLP_SYMBOL_INFO_PARAMETER             SYMF_PARAMETER
539 #define IMAGEHLP_SYMBOL_INFO_LOCAL                 SYMF_LOCAL
540 #define IMAGEHLP_SYMBOL_INFO_CONSTANT              SYMF_CONSTANT
541 #define IMAGEHLP_SYMBOL_FUNCTION                   SYMF_FUNCTION
542
543 #define MAX_SYM_NAME                               2000
544
545 typedef struct _SYMBOL_INFO {
546     ULONG       SizeOfStruct;
547     ULONG       TypeIndex;
548     ULONG64     Reserved[2];
549     ULONG       info;
550     ULONG       Size;
551     ULONG64     ModBase;
552     ULONG       Flags;
553     ULONG64     Value;
554     ULONG64     Address;
555     ULONG       Register;
556     ULONG       Scope;
557     ULONG       Tag;
558     ULONG       NameLen;
559     ULONG       MaxNameLen;
560     CHAR        Name[1];
561 } SYMBOL_INFO, *PSYMBOL_INFO;
562
563 typedef struct _SYMBOL_INFOW
564 {
565     ULONG       SizeOfStruct;
566     ULONG       TypeIndex;
567     ULONG64     Reserved[2];
568     ULONG       Index;
569     ULONG       Size;
570     ULONG64     ModBase;
571     ULONG       Flags;
572     ULONG64     Value;
573     ULONG64     Address;
574     ULONG       Register;
575     ULONG       Scope;
576     ULONG       Tag;
577     ULONG       NameLen;
578     ULONG       MaxNameLen;
579     WCHAR       Name[1];
580 } SYMBOL_INFOW, *PSYMBOL_INFOW;
581
582 typedef struct _SYMBOL_INFO_PACKAGE
583 {
584     SYMBOL_INFO si;
585     CHAR        name[MAX_SYM_NAME+1];
586 } SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE;
587
588 typedef struct _SYMBOL_INFO_PACKAGEW
589 {
590     SYMBOL_INFOW si;
591     WCHAR        name[MAX_SYM_NAME+1];
592 } SYMBOL_INFO_PACKAGEW, *PSYMBOL_INFO_PACKAGEW;
593
594 #define DBHHEADER_DEBUGDIRS     0x1
595 typedef struct _MODLOAD_DATA
596 {
597     DWORD               ssize;
598     DWORD               ssig;
599     PVOID               data;
600     DWORD               size;
601     DWORD               flags;
602 } MODLOAD_DATA, *PMODLOAD_DATA;
603
604 typedef struct _SRCCODEINFO
605 {
606     DWORD       SizeOfStruct;
607     PVOID       Key;
608     DWORD64     ModBase;
609     CHAR        Obj[MAX_PATH+1];
610     CHAR        FileName[MAX_PATH+1];
611     DWORD       LineNumber;
612     DWORD64     Address;
613 } SRCCODEINFO, *PSRCCODEINFO;
614
615 typedef struct _SRCCODEINFOW
616 {
617     DWORD       SizeOfStruct;
618     PVOID       Key;
619     DWORD64     ModBase;
620     WCHAR       Obj[MAX_PATH+1];
621     WCHAR       FileName[MAX_PATH+1];
622     DWORD       LineNumber;
623     DWORD64     Address;
624 } SRCCODEINFOW, *PSRCCODEINFOW;
625
626 /***********************************************************************
627  * Callbacks
628  */
629
630 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(
631   PCSTR, PVOID
632 );
633 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(
634   PCWSTR, PVOID
635 );
636
637 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
638   PCSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
639   PVOID UserContext
640 );
641 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(
642   PCSTR, DWORD64, ULONG, PVOID
643 );
644 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(
645   PCWSTR, DWORD64, ULONG, PVOID
646 );
647
648 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(
649   HANDLE, PCSTR, PVOID
650 );
651 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(
652   HANDLE, PCWSTR, PVOID
653 );
654
655 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(
656   HANDLE, PCSTR, PVOID
657 );
658 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(
659   HANDLE, PCWSTR, PVOID
660 );
661
662 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(
663   PCSTR, PVOID
664 );
665 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(
666   PCWSTR, PVOID
667 );
668
669 typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)(
670   IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName,
671   ULONG_PTR Va, ULONG_PTR Parameter
672 );
673 typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE32)(
674   IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName,
675   ULONG Va, ULONG_PTR Parameter
676 );
677 typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE64)(
678   IMAGEHLP_STATUS_REASON Reason, PCSTR ImageName, PCSTR DllName,
679   ULONG64 Va, ULONG_PTR Parameter
680 );
681
682 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
683   PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext
684 );
685 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(
686   PSYMBOL_INFOW pSymInfo, ULONG SymbolSize, PVOID UserContext
687 );
688
689 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(
690   PSRCCODEINFO, PVOID
691 );
692 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(
693   PSRCCODEINFOW, PVOID
694 );
695
696 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(
697   PSOURCEFILE pSourceFile, PVOID UserContext
698 );
699 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(
700   PSOURCEFILEW pSourceFile, PVOID UserContext
701 );
702
703 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
704   PCSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
705 );
706 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(
707   PCSTR, DWORD64, PVOID
708 );
709 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(
710   PCWSTR, DWORD64, PVOID
711 );
712
713 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
714   PCSTR, ULONG, ULONG, PVOID
715 );
716 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(
717   PCWSTR, ULONG, ULONG, PVOID
718 );
719 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(
720   PCSTR, DWORD64, ULONG, PVOID
721 );
722 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(
723   PCWSTR, DWORD64, ULONG, PVOID
724 );
725
726 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(
727   HANDLE, DWORD, PVOID
728 );
729 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(
730   HANDLE, ULONG64, ULONG64
731 );
732
733 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
734   HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
735   PVOID UserContext
736 );
737 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(
738   HANDLE, ULONG, ULONG64, ULONG64
739 );
740
741 typedef BOOL (CALLBACK *DIGEST_FUNCTION)(
742   DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength
743 );
744
745 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
746   HANDLE  hProcess, DWORD lpBaseAddress, PVOID lpBuffer,
747   DWORD nSize, PDWORD lpNumberOfBytesRead
748 );
749
750 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)(
751   HANDLE  hProcess, DWORD64 lpBaseAddress, PVOID lpBuffer,
752   DWORD nSize, LPDWORD lpNumberOfBytesRead
753 );
754
755 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
756   HANDLE hProcess, DWORD AddrBase
757 );
758
759 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
760   HANDLE hProcess, DWORD64 AddrBase
761 );
762
763 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
764   HANDLE hProcess, DWORD ReturnAddress);
765
766 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(
767   HANDLE hProcess, DWORD64 ReturnAddress);
768
769 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
770   HANDLE hProcess, HANDLE hThread, LPADDRESS lpaddr
771 );
772
773 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(
774   HANDLE hProcess, HANDLE hThread, LPADDRESS64 lpaddr
775 );
776
777
778 /***********************************************************************
779  * Functions
780  */
781
782 BOOL WINAPI BindImage(
783   PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath
784 );
785 BOOL WINAPI BindImageEx(
786   DWORD Flags, PCSTR ImageName, PCSTR DllPath, PCSTR SymbolPath,
787   PIMAGEHLP_STATUS_ROUTINE StatusRoutine
788 );
789 PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
790   LPVOID BaseAddress, DWORD FileLength,
791   LPDWORD HeaderSum, LPDWORD CheckSum
792 );
793 BOOL WINAPI EnumDirTree(
794   HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID
795 );
796 BOOL WINAPI EnumDirTreeW(
797   HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID
798 );
799 BOOL WINAPI EnumerateLoadedModules(
800   HANDLE hProcess,
801   PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
802   PVOID UserContext
803 );
804 BOOL WINAPI EnumerateLoadedModules64(
805   HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID
806 );
807 BOOL WINAPI EnumerateLoadedModulesW64(
808   HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID
809 );
810 HANDLE WINAPI FindDebugInfoFile(
811   PCSTR FileName, PCSTR SymbolPath, PSTR DebugFilePath
812 );
813 HANDLE WINAPI FindDebugInfoFileEx(
814   PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID
815 );
816 HANDLE WINAPI FindDebugInfoFileExW(
817   PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID
818 );
819 HANDLE WINAPI FindExecutableImage(
820   PCSTR, PCSTR, PSTR
821 );
822 HANDLE WINAPI FindExecutableImageEx(
823   PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID
824 );
825 HANDLE WINAPI FindExecutableImageExW(
826   PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID
827 );
828 BOOL WINAPI FindFileInPath(
829   HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
830   PSTR, PFINDFILEINPATHCALLBACK, PVOID
831 );
832 BOOL WINAPI GetImageConfigInformation(
833   PLOADED_IMAGE LoadedImage,
834   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
835 );
836 DWORD WINAPI GetImageUnusedHeaderBytes(
837   PLOADED_IMAGE LoadedImage,
838   LPDWORD SizeUnusedHeaderBytes
839 );
840 DWORD WINAPI GetTimestampForLoadedLibrary(
841   HMODULE Module
842 );
843 BOOL WINAPI ImageAddCertificate(
844   HANDLE FileHandle, LPWIN_CERTIFICATE Certificate, PDWORD Index
845 );
846 PVOID WINAPI ImageDirectoryEntryToData(
847   PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
848 );
849 BOOL WINAPI ImageEnumerateCertificates(
850   HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
851   PDWORD Indices, DWORD IndexCount
852 );
853 BOOL WINAPI ImageGetCertificateData(
854   HANDLE FileHandle, DWORD CertificateIndex,
855   LPWIN_CERTIFICATE Certificate, PDWORD RequiredLength
856 );
857 BOOL WINAPI ImageGetCertificateHeader(
858   HANDLE FileHandle, DWORD CertificateIndex,
859   LPWIN_CERTIFICATE Certificateheader
860 );
861 BOOL WINAPI ImageGetDigestStream(
862   HANDLE FileHandle, DWORD DigestLevel,
863   DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle
864 );
865 PLOADED_IMAGE WINAPI ImageLoad(
866   PCSTR DllName, PCSTR DllPath
867 );
868 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
869   PVOID Base
870 );
871 BOOL WINAPI ImageRemoveCertificate(
872   HANDLE FileHandle, DWORD Index
873 );
874 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
875   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva
876 );
877 PVOID WINAPI ImageRvaToVa(
878   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
879   PIMAGE_SECTION_HEADER *LastRvaSection
880 );
881 BOOL WINAPI ImageUnload(
882   PLOADED_IMAGE LoadedImage
883 );
884 LPAPI_VERSION WINAPI ImagehlpApiVersion(
885   void
886 );
887 LPAPI_VERSION WINAPI ImagehlpApiVersionEx(
888   LPAPI_VERSION AppVersion
889 );
890 BOOL WINAPI MakeSureDirectoryPathExists(
891   PCSTR DirPath
892 );
893 BOOL WINAPI MapAndLoad(
894   PCSTR ImageName, PCSTR DllPath, PLOADED_IMAGE LoadedImage,
895   BOOL DotDll, BOOL ReadOnly
896 );
897 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
898   HANDLE FileHandle, PCSTR FileName,
899   PCSTR SymbolPath, ULONG ImageBase
900 );
901 DWORD WINAPI MapFileAndCheckSumA(
902   PCSTR Filename, PDWORD HeaderSum, PDWORD CheckSum
903 );
904 DWORD WINAPI MapFileAndCheckSumW(
905   PCWSTR Filename, PDWORD HeaderSum, PDWORD CheckSum
906 );
907 BOOL WINAPI ReBaseImage(
908   PCSTR CurrentImageName, PCSTR SymbolPath, BOOL fReBase,
909   BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
910   ULONG *OldImageSize, ULONG_PTR *OldImageBase, ULONG *NewImageSize,
911   ULONG_PTR *NewImageBase, ULONG TimeStamp
912 );
913 BOOL WINAPI ReBaseImage64(
914   PCSTR CurrentImageName, PCSTR SymbolPath, BOOL fReBase,
915   BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
916   ULONG *OldImageSize, ULONG64 *OldImageBase, ULONG *NewImageSize,
917   ULONG64 *NewImageBase, ULONG TimeStamp
918 );
919 BOOL WINAPI RemovePrivateCvSymbolic(
920   PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
921 );
922 BOOL WINAPI SearchTreeForFile(
923   PCSTR RootPath, PCSTR InputPathName, PSTR OutputPathBuffer
924 );
925 BOOL WINAPI SearchTreeForFileW(
926   PCWSTR RootPath, PCWSTR InputPathName, PWSTR OutputPathBuffer
927 );
928 BOOL WINAPI SetImageConfigInformation(
929   PLOADED_IMAGE LoadedImage,
930   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
931 );
932 BOOL WINAPI SplitSymbols(
933   PSTR ImageName, PCSTR SymbolsPath,
934   PSTR SymbolFilePath, ULONG Flags
935 );
936 BOOL WINAPI StackWalk(
937   DWORD MachineType, HANDLE hProcess, HANDLE hThread,
938   LPSTACKFRAME StackFrame, PVOID ContextRecord,
939   PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
940   PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
941   PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
942   PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
943 );
944 BOOL WINAPI StackWalk64(
945   DWORD MachineType, HANDLE hProcess, HANDLE hThread,
946   LPSTACKFRAME64 StackFrame, PVOID ContextRecord,
947   PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
948   PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
949   PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
950   PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
951 );
952 BOOL WINAPI SymAddSymbol(
953   HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD
954 );
955 BOOL WINAPI SymAddSymbolW(
956   HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD
957 );
958 BOOL WINAPI SymCleanup(
959   HANDLE hProcess
960 );
961 BOOL WINAPI SymDeleteSymbol(
962   HANDLE, ULONG64, PCSTR, DWORD64, DWORD
963 );
964 BOOL WINAPI SymDeleteSymbolW(
965   HANDLE, ULONG64, PCWSTR, DWORD64, DWORD
966 );
967 BOOL WINAPI SymEnumerateModules(
968   HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
969   PVOID UserContext
970 );
971 BOOL WINAPI SymEnumerateModules64(
972   HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID
973 );
974 BOOL WINAPI SymEnumerateModulesW64(
975   HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID
976 );
977 BOOL WINAPI SymEnumerateSymbols(
978   HANDLE hProcess, DWORD BaseOfDll,
979   PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
980 );
981 BOOL WINAPI SymEnumerateSymbolsW(
982   HANDLE hProcess, DWORD BaseOfDll,
983   PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext
984 );
985 BOOL WINAPI SymEnumerateSymbols64(
986   HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID
987 );
988 BOOL WINAPI SymEnumerateSymbolsW64(
989   HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID
990 );
991 BOOL WINAPI SymEnumLines(
992   HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID
993 );
994 BOOL WINAPI SymEnumLinesW(
995   HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID
996 );
997 BOOL WINAPI SymEnumSourceFiles(
998   HANDLE hProcess, ULONG64 ModBase, PCSTR Mask,
999   PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles, PVOID UserContext
1000 );
1001 BOOL WINAPI SymEnumSourceFilesW(
1002   HANDLE hProcess, ULONG64 ModBase, PCWSTR Mask,
1003   PSYM_ENUMSOURCEFILES_CALLBACKW cbSrcFiles, PVOID UserContext
1004 );
1005 BOOL WINAPI SymEnumSourceLines(
1006   HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID
1007 );
1008 BOOL WINAPI SymEnumSourceLinesW(
1009   HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID
1010 );
1011 BOOL WINAPI SymEnumSymbols(
1012   HANDLE hProcess, DWORD BaseOfDll, PCSTR Mask, 
1013   PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
1014 );
1015 BOOL WINAPI SymEnumSymbolsW(
1016   HANDLE hProcess, DWORD BaseOfDll, PCWSTR Mask,
1017   PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext
1018 );
1019 BOOL WINAPI SymEnumSymbolsForAddr(
1020   HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID
1021 );
1022 BOOL WINAPI SymEnumSymbolsForAddrW(
1023   HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID
1024 );
1025 BOOL WINAPI SymEnumTypes(
1026   HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID
1027 );
1028 BOOL WINAPI SymEnumTypesW(
1029   HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID
1030 );
1031 HANDLE WINAPI SymFindExecutableImage(
1032   HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID
1033 );
1034 HANDLE WINAPI SymFindExecutableImageW(
1035   HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID
1036 );
1037 BOOL WINAPI SymFindFileInPath(
1038   HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
1039   PSTR, PFINDFILEINPATHCALLBACK, PVOID
1040 );
1041 BOOL WINAPI SymFindFileInPathW(
1042   HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD,
1043   PWSTR, PFINDFILEINPATHCALLBACKW, PVOID
1044 );
1045 BOOL WINAPI SymFromAddr(
1046   HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*
1047 );
1048 BOOL WINAPI SymFromAddrW(
1049   HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*
1050 );
1051 BOOL WINAPI SymFromIndex(
1052   HANDLE, ULONG64, DWORD, PSYMBOL_INFO
1053 );
1054 BOOL WINAPI SymFromIndexW(
1055   HANDLE, ULONG64, DWORD, PSYMBOL_INFOW
1056 );
1057 BOOL WINAPI SymFromName(
1058   HANDLE, PCSTR, PSYMBOL_INFO
1059 );
1060 BOOL WINAPI SymFromNameW(
1061   HANDLE, PCWSTR, PSYMBOL_INFOW
1062 );
1063 BOOL WINAPI SymFromToken(
1064   HANDLE, DWORD64, DWORD, PSYMBOL_INFO
1065 );
1066 BOOL WINAPI SymFromTokenW(
1067   HANDLE, DWORD64, DWORD, PSYMBOL_INFOW
1068 );
1069 PVOID WINAPI SymFunctionTableAccess(
1070   HANDLE hProcess, DWORD AddrBase
1071 );
1072 PVOID WINAPI SymFunctionTableAccess64(
1073   HANDLE hProcess, DWORD64 AddrBase
1074 );
1075 ULONG WINAPI SymGetFileLineOffsets64(
1076   HANDLE, PCSTR, PCSTR, PDWORD64, ULONG
1077 );
1078 PCHAR WINAPI SymGetHomeDirectory(
1079   DWORD, PSTR, size_t
1080 );
1081 PWSTR WINAPI SymGetHomeDirectoryW(
1082   DWORD, PWSTR, size_t
1083 );
1084 BOOL WINAPI SymGetLineFromAddr(
1085   HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE
1086 );
1087 BOOL WINAPI SymGetLineFromAddrW(
1088   HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW
1089 );
1090 BOOL WINAPI SymGetLineFromAddr64(
1091   HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64
1092 );
1093 BOOL WINAPI SymGetLineFromAddrW64(
1094   HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64
1095 );
1096 BOOL WINAPI SymGetLineFromName(
1097   HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE
1098 );
1099 BOOL WINAPI SymGetLineFromName64(
1100   HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64
1101 );
1102 BOOL WINAPI SymGetLineFromNameW64(
1103   HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64
1104 );
1105 BOOL WINAPI SymGetLineNext(
1106   HANDLE, PIMAGEHLP_LINE
1107 );
1108 BOOL WINAPI SymGetLineNextW(
1109   HANDLE, PIMAGEHLP_LINEW
1110 );
1111 BOOL WINAPI SymGetLineNext64(
1112   HANDLE, PIMAGEHLP_LINE64
1113 );
1114 BOOL WINAPI SymGetLineNextW64(
1115   HANDLE, PIMAGEHLP_LINEW64
1116 );
1117 BOOL WINAPI SymGetLinePrev(
1118   HANDLE, PIMAGEHLP_LINE
1119 );
1120 BOOL WINAPI SymGetLinePrevW(
1121   HANDLE, PIMAGEHLP_LINEW
1122 );
1123 BOOL WINAPI SymGetLinePrev64(
1124   HANDLE, PIMAGEHLP_LINE64
1125 );
1126 BOOL WINAPI SymGetLinePrevW64(
1127   HANDLE, PIMAGEHLP_LINEW64
1128 );
1129 DWORD WINAPI SymGetModuleBase(
1130   HANDLE hProcess, DWORD dwAddr
1131 );
1132 BOOL WINAPI SymGetModuleInfo(
1133   HANDLE hProcess, DWORD dwAddr,
1134   PIMAGEHLP_MODULE ModuleInfo
1135 );
1136 BOOL WINAPI SymGetModuleInfoW(
1137   HANDLE, DWORD, PIMAGEHLP_MODULEW
1138 );
1139 BOOL WINAPI SymGetModuleInfo64(
1140   HANDLE, DWORD64, PIMAGEHLP_MODULE64
1141 );
1142 BOOL WINAPI SymGetModuleInfoW64(
1143   HANDLE, DWORD64, PIMAGEHLP_MODULEW64
1144 );
1145 DWORD WINAPI SymGetOptions(
1146   void
1147 );
1148 BOOL WINAPI SymGetScope(
1149   HANDLE, ULONG64, DWORD, PSYMBOL_INFO
1150 );
1151 BOOL WINAPI SymGetScopeW(
1152   HANDLE, ULONG64, DWORD, PSYMBOL_INFOW
1153 );
1154 BOOL WINAPI SymGetSearchPath(
1155   HANDLE hProcess, PSTR szSearchPath, DWORD SearchPathLength
1156 );
1157 BOOL WINAPI SymGetSearchPathW(
1158   HANDLE hProcess, PWSTR szSearchPath, DWORD SearchPathLength
1159 );
1160 BOOL WINAPI SymGetSourceFile(
1161   HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD
1162 );
1163 BOOL WINAPI SymGetSourceFileW(
1164   HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD
1165 );
1166 BOOL WINAPI SymGetSourceFileFromToken(
1167   HANDLE, PVOID, PCSTR, PSTR, DWORD
1168 );
1169 BOOL WINAPI SymGetSourceFileFromTokenW(
1170   HANDLE, PVOID, PCWSTR, PWSTR, DWORD
1171 );
1172 BOOL WINAPI SymGetSourceFileToken(
1173   HANDLE, ULONG64, PCSTR, PVOID*, DWORD*
1174 );
1175 BOOL WINAPI SymGetSourceFileTokenW(
1176   HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*
1177 );
1178 BOOL WINAPI SymGetSourceVarFromToken(
1179   HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD
1180 );
1181 BOOL WINAPI SymGetSourceVarFromTokenW(
1182   HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD
1183 );
1184 BOOL WINAPI SymGetSymFromAddr(
1185   HANDLE hProcess, DWORD dwAddr,
1186   PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol
1187 );
1188 BOOL WINAPI SymGetSymFromAddr64(
1189   HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64
1190 );
1191 BOOL WINAPI SymGetSymFromName(
1192   HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL Symbol
1193 );
1194 BOOL WINAPI SymGetSymFromName64(
1195   HANDLE, PCSTR, PIMAGEHLP_SYMBOL64
1196 );
1197 BOOL WINAPI SymGetSymNext(
1198   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
1199 );
1200 BOOL WINAPI SymGetSymNext64(
1201   HANDLE, PIMAGEHLP_SYMBOL64
1202 );
1203 BOOL WINAPI SymGetSymPrev(
1204   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
1205 );
1206 BOOL WINAPI SymGetSymPrev64(
1207   HANDLE, PIMAGEHLP_SYMBOL64
1208 );
1209 BOOL WINAPI SymGetTypeFromName(
1210   HANDLE, ULONG64, PCSTR, PSYMBOL_INFO
1211 );
1212 BOOL WINAPI SymGetTypeFromNameW(
1213   HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW
1214 );
1215 BOOL WINAPI SymGetTypeInfo(
1216   HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID
1217 );
1218 BOOL WINAPI SymGetTypeInfoEx(
1219   HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS
1220 );
1221 BOOL WINAPI SymInitialize(
1222   HANDLE hProcess, PCSTR UserSearchPath, BOOL fInvadeProcess
1223 );
1224 BOOL WINAPI SymInitializeW(
1225   HANDLE hProcess, PCWSTR UserSearchPath, BOOL fInvadeProcess
1226 );
1227 DWORD WINAPI SymLoadModule(
1228   HANDLE hProcess, HANDLE hFile, PCSTR ImageName, PCSTR ModuleName,
1229   DWORD BaseOfDll, DWORD SizeOfDll
1230 );
1231 DWORD64 WINAPI SymLoadModule64(
1232   HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD
1233 );
1234 DWORD64 WINAPI SymLoadModuleEx(
1235   HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD, PMODLOAD_DATA, DWORD
1236 );
1237 DWORD64 WINAPI SymLoadModuleExW(
1238   HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD, PMODLOAD_DATA, DWORD
1239 );
1240 BOOL WINAPI SymMatchFileName(
1241   PCSTR, PCSTR, PSTR*, PSTR*
1242 );
1243 BOOL WINAPI SymMatchFileNameW(
1244   PCWSTR, PCWSTR, PWSTR*, PWSTR*
1245 );
1246 BOOL WINAPI SymMatchString(
1247   PCSTR, PCSTR, BOOL
1248 );
1249 BOOL WINAPI SymMatchStringA(
1250   PCSTR, PCSTR, BOOL
1251 );
1252 BOOL WINAPI SymMatchStringW(
1253   PCWSTR, PCWSTR, BOOL
1254 );
1255 BOOL WINAPI SymRegisterCallback(
1256   HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
1257   PVOID UserContext
1258 );
1259 BOOL WINAPI SymRegisterCallback64(
1260   HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64
1261 );
1262 BOOL WINAPI SymRegisterCallbackW64(
1263   HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64
1264 );
1265 BOOL WINAPI SymRegisterFunctionEntryCallback(
1266   HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID
1267 );
1268 BOOL WINAPI SymRegisterFunctionEntryCallback64(
1269   HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64
1270 );
1271 BOOL WINAPI SymSearch(
1272   HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64,
1273   PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD
1274 );
1275 BOOL WINAPI SymSearchW(
1276   HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64,
1277   PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD
1278 );
1279 DWORD WINAPI SymSetContext(
1280   HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame, 
1281   PIMAGEHLP_CONTEXT Context
1282 );
1283 PCHAR WINAPI SymSetHomeDirectory(
1284   HANDLE, PCSTR
1285 );
1286 PWSTR WINAPI SymSetHomeDirectoryW(
1287   HANDLE, PCWSTR
1288 );
1289 DWORD WINAPI SymSetOptions(
1290   DWORD SymOptions
1291 );
1292 BOOL WINAPI SymSetParentWindow(
1293   HWND
1294 );
1295 BOOL WINAPI SymSetSearchPath(
1296   HANDLE hProcess, PCSTR szSearchPath
1297 );
1298 BOOL WINAPI SymSetSearchPathW(
1299   HANDLE hProcess, PCWSTR szSearchPath
1300 );
1301 BOOL WINAPI SymUnDName(
1302   PIMAGEHLP_SYMBOL sym, PSTR UnDecName, DWORD UnDecNameLength
1303 );
1304 BOOL WINAPI SymUnDName64(
1305   PIMAGEHLP_SYMBOL64, PSTR, DWORD
1306 );
1307 BOOL WINAPI SymUnloadModule(
1308   HANDLE hProcess, DWORD BaseOfDll
1309 );
1310 BOOL WINAPI TouchFileTimes(
1311   HANDLE FileHandle, LPSYSTEMTIME lpSystemTime
1312 );
1313 DWORD WINAPI UnDecorateSymbolName(
1314   PCSTR DecoratedName, PSTR UnDecoratedName,
1315   DWORD UndecoratedLength, DWORD Flags
1316 );
1317 DWORD WINAPI UnDecorateSymbolNameW(
1318   PCWSTR DecoratedName, PWSTR UnDecoratedName,
1319   DWORD UndecoratedLength, DWORD Flags
1320 );
1321 BOOL WINAPI UnMapAndLoad(
1322   PLOADED_IMAGE LoadedImage
1323 );
1324 BOOL WINAPI UnmapDebugInformation(
1325   PIMAGE_DEBUG_INFORMATION DebugInfo
1326 );
1327 BOOL WINAPI UpdateDebugInfoFile(
1328   PCSTR ImageFileName, PCSTR SymbolPath,
1329   PSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders
1330 );
1331 BOOL WINAPI UpdateDebugInfoFileEx(
1332   PCSTR ImageFileName, PCSTR SymbolPath, PSTR DebugFilePath,
1333   PIMAGE_NT_HEADERS32 NtHeaders, DWORD OldChecksum
1334 );
1335
1336 #ifdef __cplusplus
1337 } /* extern "C" */
1338 #endif /* defined(__cplusplus) */
1339
1340 #endif  /* __WINE_IMAGEHLP_H */