Fixed some graphical problems of the treeview and added support LMB
[wine] / include / imagehlp.h
1 /*
2  *      imagehlp.h   -       Declarations for IMAGEHLP
3  */
4
5 #ifndef __WINE_IMAGEHLP_H
6 #define __WINE_IMAGEHLP_H
7
8 #include "windef.h"
9 #include "winbase.h"
10
11 /***********************************************************************
12  * Types
13  */
14
15 typedef PVOID DIGEST_HANDLE; 
16
17 /***********************************************************************
18  * Enums/Defines
19  */
20
21 typedef enum _IMAGEHLP_STATUS_REASON {
22   BindOutOfMemory,
23   BindRvaToVaFailed,
24   BindNoRoomInImage,
25   BindImportModuleFailed,
26   BindImportProcedureFailed,
27   BindImportModule,
28   BindImportProcedure,
29   BindForwarder,
30   BindForwarderNOT,
31   BindImageModified,
32   BindExpandFileHeaders,
33   BindImageComplete,
34   BindMismatchedSymbols,
35   BindSymbolsNotUpdated
36 } IMAGEHLP_STATUS_REASON;
37
38 #define BIND_NO_BOUND_IMPORTS  0x00000001
39 #define BIND_NO_UPDATE         0x00000002
40 #define BIND_ALL_IMAGES        0x00000004
41 #define BIND_CACHE_IMPORT_DLLS 0x00000008
42
43 #define CERT_PE_IMAGE_DIGEST_DEBUG_INFO      0x01
44 #define CERT_PE_IMAGE_DIGEST_RESOURCES       0x02
45 #define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
46 #define CERT_PE_IMAGE_DIGEST_NON_PE_INFO     0x08
47
48 #define CERT_SECTION_TYPE_ANY 0xFF
49
50 #define WIN_CERT_REVISION_1_0 0x0100
51 #define WIN_CERT_REVISION_2_0 0x0200
52
53 #define WIN_CERT_TYPE_X509             0x0001 /* X.509 Certificate */
54 #define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 /* PKCS SignedData */
55 #define WIN_CERT_TYPE_RESERVED_1       0x0003 /* Reserved */
56
57 #define SPLITSYM_REMOVE_PRIVATE    0x00000001
58 #define SPLITSYM_EXTRACT_ALL       0x00000002
59 #define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004
60
61 #define IMAGE_DEBUG_TYPE_UNKNOWN        0
62 #define IMAGE_DEBUG_TYPE_COFF           1
63 #define IMAGE_DEBUG_TYPE_CODEVIEW       2
64 #define IMAGE_DEBUG_TYPE_FPO            3
65 #define IMAGE_DEBUG_TYPE_MISC           4
66 #define IMAGE_DEBUG_TYPE_EXCEPTION      5
67 #define IMAGE_DEBUG_TYPE_FIXUP          6
68 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC    7
69 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC  8
70 #define IMAGE_DEBUG_TYPE_BORLAND        9
71 #define IMAGE_DEBUG_TYPE_RESERVED10    10
72
73 #define FRAME_FPO    0
74 #define FRAME_TRAP   1
75 #define FRAME_TSS    2
76 #define FRAME_NONFPO 3
77
78 #define CHECKSUM_SUCCESS         0
79 #define CHECKSUM_OPEN_FAILURE    1
80 #define CHECKSUM_MAP_FAILURE     2
81 #define CHECKSUM_MAPVIEW_FAILURE 3
82 #define CHECKSUM_UNICODE_FAILURE 4
83
84 typedef enum _ADRESS_MODE {
85   AddrMode1616,
86   AddrMode1632,
87   AddrModeReal,
88   AddrModeFlat
89 } ADDRESS_MODE;
90
91 #define SYMOPT_CASE_INSENSITIVE  0x00000001
92 #define SYMOPT_UNDNAME           0x00000002
93 #define SYMOPT_DEFERRED_LOADS    0x00000004
94 #define SYMOPT_NO_CPP            0x00000008
95 #define SYMOPT_LOAD_LINES        0x00000010
96 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
97
98 #define SYMF_OMAP_GENERATED   0x00000001
99 #define SYMF_OMAP_MODIFIED    0x00000002
100
101 typedef enum _SYM_TYPE {
102   SymNone,
103   SymCoff,
104   SymCv,
105   SymPdb,
106   SymExport,
107   SymDeferred,
108   SymSym        /* .sym file */
109 } SYM_TYPE32;
110
111 #define UNDNAME_COMPLETE               0x0000
112 #define UNDNAME_NO_LEADING_UNDERSCORES 0x0001
113 #define UNDNAME_NO_MS_KEYWORDS         0x0002
114 #define UNDNAME_NO_FUNCTION_RETURNS    0x0004
115 #define UNDNAME_NO_ALLOCATION_MODEL    0x0008
116 #define UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010
117 #define UNDNAME_NO_MS_THISTYPE         0x0020
118 #define UNDNAME_NO_CV_THISTYPE         0x0040
119 #define UNDNAME_NO_THISTYPE            0x0060
120 #define UNDNAME_NO_ACCESS_SPECIFIERS   0x0080
121 #define UNDNAME_NO_THROW_SIGNATURES    0x0100
122 #define UNDNAME_NO_MEMBER_TYPE         0x0200
123 #define UNDNAME_NO_RETURN_UDT_MODEL    0x0400
124 #define UNDNAME_32_BIT_DECODE          0x0800
125 #define UNDNAME_NAME_ONLY              0x1000
126 #define UNDNAME_NO_ARGUMENTS           0x2000
127 #define UNDNAME_NO_SPECIAL_SYMS        0x4000
128
129 #define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001
130 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002
131 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003
132 #define CBA_SYMBOLS_UNLOADED                    0x00000004
133 #define CBA_DUPLICATE_SYMBOL                    0x00000005
134
135 #define IMAGE_DOS_SIGNATURE    0x5A4D     /* MZ   */
136 #define IMAGE_OS2_SIGNATURE    0x454E     /* NE   */
137 #define IMAGE_OS2_SIGNATURE_LE 0x454C     /* LE   */
138 #define IMAGE_VXD_SIGNATURE    0x454C     /* LE   */
139 #define IMAGE_NT_SIGNATURE     0x00004550 /* PE00 */
140
141 /***********************************************************************
142  * Structures
143  */
144
145 typedef struct _IMAGE_DATA_DIRECTORY {
146   DWORD VirtualAddress;
147   DWORD Size;
148 } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
149
150 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
151
152 typedef struct _IMAGE_OPTIONAL_HEADER {
153
154   /* Standard fields */
155
156   WORD  Magic;
157   BYTE  MajorLinkerVersion;
158   BYTE  MinorLinkerVersion;
159   DWORD SizeOfCode;
160   DWORD SizeOfInitializedData;
161   DWORD SizeOfUninitializedData;
162   DWORD AddressOfEntryPoint;
163   DWORD BaseOfCode;
164   DWORD BaseOfData;
165
166   /* NT additional fields */
167
168   DWORD ImageBase;
169   DWORD SectionAlignment;
170   DWORD FileAlignment;
171   WORD  MajorOperatingSystemVersion;
172   WORD  MinorOperatingSystemVersion;
173   WORD  MajorImageVersion;
174   WORD  MinorImageVersion;
175   WORD  MajorSubsystemVersion;
176   WORD  MinorSubsystemVersion;
177   DWORD Win32VersionValue;
178   DWORD SizeOfImage;
179   DWORD SizeOfHeaders;
180   DWORD CheckSum;
181   WORD  Subsystem;
182   WORD  DllCharacteristics;
183   DWORD SizeOfStackReserve;
184   DWORD SizeOfStackCommit;
185   DWORD SizeOfHeapReserve;
186   DWORD SizeOfHeapCommit;
187   DWORD LoaderFlags;
188   DWORD NumberOfRvaAndSizes;
189   IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
190 } IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
191
192 typedef struct _IMAGE_FILE_HEADER {
193   WORD  Machine;
194   WORD  NumberOfSections;
195   DWORD TimeDateStamp;
196   DWORD PointerToSymbolTable;
197   DWORD NumberOfSymbols;
198   WORD  SizeOfOptionalHeader;
199   WORD  Characteristics;
200 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
201
202 typedef struct _IMAGE_NT_HEADERS {
203   DWORD Signature;
204   IMAGE_FILE_HEADER FileHeader;
205   IMAGE_OPTIONAL_HEADER OptionalHeader;
206 } IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
207
208 #define IMAGE_SIZEOF_SHORT_NAME 8
209
210 typedef struct _IMAGE_SECTION_HEADER {
211   BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
212   union {
213     DWORD PhysicalAddress;
214     DWORD VirtualSize;
215   } Misc;
216   DWORD VirtualAddress;
217   DWORD SizeOfRawData;
218   DWORD PointerToRawData;
219   DWORD PointerToRelocations;
220   DWORD PointerToLinenumbers;
221   WORD  NumberOfRelocations;
222   WORD  NumberOfLinenumbers;
223   DWORD Characteristics;
224 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
225
226 typedef struct _LOADED_IMAGE {
227   LPSTR                   ModuleName;
228   HANDLE                hFile;
229   PUCHAR                  MappedAddress;
230   PIMAGE_NT_HEADERS     FileHeader;
231   PIMAGE_SECTION_HEADER LastRvaSection;
232   ULONG                   NumberOfSections;
233   PIMAGE_SECTION_HEADER Sections;
234   ULONG                   Characteristics;
235   BOOLEAN                 fSystemImage;
236   BOOLEAN                 fDOSImage;
237   LIST_ENTRY            Links;
238   ULONG                   SizeOfImage;
239 } LOADED_IMAGE, *PLOADED_IMAGE;
240
241 typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
242   DWORD Characteristics;
243   DWORD TimeDateStamp;
244   WORD  MajorVersion;
245   WORD  MinorVersion;
246   DWORD GlobalFlagsClear;
247   DWORD GlobalFlagsSet;
248   DWORD CriticalSectionDefaultTimeout;
249   DWORD DeCommitFreeBlockThreshold;
250   DWORD DeCommitTotalFreeThreshold;
251   PVOID LockPrefixTable;
252   DWORD MaximumAllocationSize;
253   DWORD VirtualMemoryThreshold;
254   DWORD ProcessHeapFlags;
255   DWORD ProcessAffinityMask;
256   WORD  CSDVersion;
257   WORD  Reserved1;
258   PVOID EditList;
259   DWORD Reserved[1];
260 } IMAGE_LOAD_CONFIG_DIRECTORY, *PIMAGE_LOAD_CONFIG_DIRECTORY;
261
262 typedef struct _WIN_CERTIFICATE {
263   DWORD dwLength;
264   WORD  wRevision;                   /*  WIN_CERT_REVISON_xxx */ 
265   WORD  wCertificateType;            /*  WIN_CERT_TYPE_xxx */
266   BYTE  bCertificate[ANYSIZE_ARRAY];
267 } WIN_CERTIFICATE, *PWIN_CERTIFICATE;
268
269 typedef struct _API_VERSION {
270   USHORT  MajorVersion;
271   USHORT  MinorVersion;
272   USHORT  Revision;
273   USHORT  Reserved;
274 } API_VERSION, *PAPI_VERSION;
275
276 typedef struct _IMAGE_FUNCTION_ENTRY {
277   DWORD StartingAddress;
278   DWORD EndingAddress;
279   DWORD EndOfPrologue;
280 } IMAGE_FUNCTION_ENTRY, *PIMAGE_FUNCTION_ENTRY;
281
282 typedef struct _IMAGE_DEBUG_DIRECTORY {
283   DWORD Characteristics;
284   DWORD TimeDateStamp;
285   WORD  MajorVersion;
286   WORD  MinorVersion;
287   DWORD Type;
288   DWORD SizeOfData;
289   DWORD AddressOfRawData;
290   DWORD PointerToRawData;
291 } IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
292
293 typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
294   DWORD NumberOfSymbols;
295   DWORD LvaToFirstSymbol;
296   DWORD NumberOfLinenumbers;
297   DWORD LvaToFirstLinenumber;
298   DWORD RvaToFirstByteOfCode;
299   DWORD RvaToLastByteOfCode;
300   DWORD RvaToFirstByteOfData;
301   DWORD RvaToLastByteOfData;
302 } IMAGE_COFF_SYMBOLS_HEADER, *PIMAGE_COFF_SYMBOLS_HEADER;
303
304 typedef struct _FPO_DATA {
305   DWORD ulOffStart;
306   DWORD cbProcSize;
307   DWORD cdwLocals;
308   WORD  cdwParams;
309   WORD  cbProlog : 8;
310   WORD  cbRegs   : 3;
311   WORD  fHasSEH  : 1;
312   WORD  fUseBP   : 1;
313   WORD  reserved : 1;
314   WORD  cbFrame  : 2;
315 } FPO_DATA, *PFPO_DATA;
316
317 typedef struct _IMAGE_DEBUG_INFORMATION {
318   LIST_ENTRY List;
319   DWORD        Size;
320   PVOID        MappedBase;
321   USHORT       Machine;
322   USHORT       Characteristics;
323   DWORD        CheckSum;
324   DWORD        ImageBase;
325   DWORD        SizeOfImage;
326   
327   DWORD NumberOfSections;
328   PIMAGE_SECTION_HEADER Sections;
329
330   DWORD ExportedNamesSize;
331   LPSTR ExportedNames;
332
333   DWORD NumberOfFunctionTableEntries;
334   PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
335   DWORD LowestFunctionStartingAddress;
336   DWORD HighestFunctionEndingAddress;
337
338   DWORD NumberOfFpoTableEntries;
339   PFPO_DATA FpoTableEntries;
340
341   DWORD SizeOfCoffSymbols;
342   PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
343
344   DWORD SizeOfCodeViewSymbols;
345   PVOID CodeViewSymbols;
346
347   LPSTR ImageFilePath;
348   LPSTR ImageFileName;
349   LPSTR DebugFilePath;
350
351   DWORD TimeDateStamp;
352
353   BOOL RomImage;
354   PIMAGE_DEBUG_DIRECTORY DebugDirectory;
355   DWORD  NumberOfDebugDirectories;
356
357   DWORD Reserved[3];
358 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
359
360 typedef struct _ADDRESS {
361     DWORD          Offset;
362     WORD           Segment;
363     ADDRESS_MODE Mode;
364 } ADDRESS, *PADDRESS;
365
366 typedef struct _KDHELP {
367   DWORD Thread;
368   DWORD ThCallbackStack;
369   DWORD NextCallback;
370   DWORD FramePointer;
371   DWORD KiCallUserMode;
372   DWORD KeUserCallbackDispatcher;
373   DWORD SystemRangeStart;
374 } KDHELP, *PKDHELP;
375
376 typedef struct _STACKFRAME {
377   ADDRESS AddrPC;
378   ADDRESS AddrReturn;
379   ADDRESS AddrFrame;
380   ADDRESS AddrStack;
381   PVOID     FuncTableEntry;
382   DWORD     Params[4];
383   BOOL    Far;
384   BOOL    Virtual;
385   DWORD     Reserved[3];
386   KDHELP  KdHelp;
387 } STACKFRAME, *PSTACKFRAME;
388
389 typedef struct _IMAGEHLP_SYMBOL {
390   DWORD SizeOfStruct;
391   DWORD Address;
392   DWORD Size;
393   DWORD Flags;
394   DWORD MaxNameLength;
395   CHAR  Name[ANYSIZE_ARRAY];
396 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
397
398 typedef struct _IMAGEHLP_MODULE {
399   DWORD      SizeOfStruct;
400   DWORD      BaseOfImage;
401   DWORD      ImageSize;
402   DWORD      TimeDateStamp;
403   DWORD      CheckSum;
404   DWORD      NumSyms;
405   SYM_TYPE32 SymType;
406   CHAR       ModuleName[32];
407   CHAR       ImageName[256];
408   CHAR       LoadedImageName[256];
409 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
410
411 typedef struct _IMAGEHLP_LINE {
412   DWORD SizeOfStruct;
413   DWORD Key;
414   DWORD LineNumber;
415   PCHAR FileName;
416   DWORD Address;
417 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
418
419 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
420   DWORD   SizeOfStruct;
421   DWORD   BaseOfImage;
422   DWORD   CheckSum;
423   DWORD   TimeDateStamp;
424   CHAR    FileName[MAX_PATH];
425   BOOLEAN Reparse;
426 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
427
428 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
429   DWORD              SizeOfStruct;
430   DWORD              NumberOfDups;
431   PIMAGEHLP_SYMBOL Symbol;
432   ULONG              SelectedSymbol;
433 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
434
435 typedef struct _IMAGE_DOS_HEADER {
436   WORD e_magic;
437   WORD e_cblp;
438   WORD e_cp;
439   WORD e_crlc;
440   WORD e_cparhdr;
441   WORD e_minalloc;
442   WORD e_maxalloc;
443   WORD e_ss;
444   WORD e_sp;
445   WORD e_csum;
446   WORD e_ip;
447   WORD e_cs;
448   WORD e_lfarlc;
449   WORD e_ovno;
450   WORD e_res[4];
451   WORD e_oemid;
452   WORD e_oeminfo;
453   WORD e_res2[10];
454   LONG e_lfanew;
455 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
456
457 typedef struct _IMAGE_OS2_HEADER {
458   WORD ne_magic;
459   CHAR ne_ver;
460   CHAR ne_rev;
461   WORD ne_enttab;
462   WORD ne_cbenttab;
463   LONG ne_crc;
464   WORD ne_flags;
465   WORD ne_autodata;
466   WORD ne_heap;
467   WORD ne_stack;
468   LONG ne_csip;
469   LONG ne_sssp;
470   WORD ne_cseg;
471   WORD ne_cmod;
472   WORD ne_cbnrestab;
473   WORD ne_segtab;
474   WORD ne_rsrctab;
475   WORD ne_restab;
476   WORD ne_modtab;
477   WORD ne_imptab;
478   LONG ne_nrestab;
479   WORD ne_cmovent;
480   WORD ne_align;
481   WORD ne_cres;
482   BYTE ne_exetyp;
483   BYTE ne_flagsothers;
484   WORD ne_pretthunks;
485   WORD ne_psegrefbytes;
486   WORD ne_swaparea;
487   WORD ne_expver;
488 } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
489
490 typedef struct _IMAGE_VXD_HEADER {
491   WORD  e32_magic;
492   BYTE  e32_border;
493   BYTE  e32_worder;
494   DWORD e32_level;
495   WORD  e32_cpu;
496   WORD  e32_os;
497   DWORD e32_ver;
498   DWORD e32_mflags;
499   DWORD e32_mpages;
500   DWORD e32_startobj;
501   DWORD e32_eip;
502   DWORD e32_stackobj;
503   DWORD e32_esp;
504   DWORD e32_pagesize;
505   DWORD e32_lastpagesize;
506   DWORD e32_fixupsize;
507   DWORD e32_fixupsum;
508   DWORD e32_ldrsize;
509   DWORD e32_ldrsum;
510   DWORD e32_objtab;
511   DWORD e32_objcnt;
512   DWORD e32_objmap;
513   DWORD e32_itermap;
514   DWORD e32_rsrctab;
515   DWORD e32_rsrccnt;
516   DWORD e32_restab;
517   DWORD e32_enttab;
518   DWORD e32_dirtab;
519   DWORD e32_dircnt;
520   DWORD e32_fpagetab;
521   DWORD e32_frectab;
522   DWORD e32_impmod;
523   DWORD e32_impmodcnt;
524   DWORD e32_impproc;
525   DWORD e32_pagesum;
526   DWORD e32_datapage;
527   DWORD e32_preload;
528   DWORD e32_nrestab;
529   DWORD e32_cbnrestab;
530   DWORD e32_nressum;
531   DWORD e32_autodata;
532   DWORD e32_debuginfo;
533   DWORD e32_debuglen;
534   DWORD e32_instpreload;
535   DWORD e32_instdemand;
536   DWORD e32_heapsize;
537   BYTE   e32_res3[12];
538   DWORD e32_winresoff;
539   DWORD e32_winreslen;
540   WORD  e32_devid;
541   WORD  e32_ddkver;
542 } IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER;
543
544 /***********************************************************************
545  * Callbacks
546  */
547
548 typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)(
549   IMAGEHLP_STATUS_REASON Reason, LPSTR ImageName, LPSTR DllName,
550   ULONG Va, ULONG Parameter
551 );
552
553 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
554   LPSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
555 );
556
557 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
558   LPSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize, 
559   PVOID UserContext
560 );
561
562 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
563   LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize, 
564   PVOID UserContext
565 );
566
567 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
568   HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
569   PVOID UserContext
570 );
571
572 typedef BOOL (CALLBACK *DIGEST_FUNCTION)(
573   DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength
574 );
575
576 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
577   HANDLE  hProcess, PCVOID lpBaseAddress, PVOID lpBuffer,
578   DWORD nSize, PDWORD lpNumberOfBytesRead
579 );
580
581 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
582   HANDLE hProcess, DWORD AddrBase
583 );
584
585 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
586   HANDLE hProcess, DWORD ReturnAddress);
587
588 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
589   HANDLE hProcess, HANDLE hThread, PADDRESS lpaddr
590 );
591
592 /***********************************************************************
593  * Functions
594  */
595
596 BOOL WINAPI BindImage(
597   LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath
598 );
599 BOOL WINAPI BindImageEx(
600   DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
601   PIMAGEHLP_STATUS_ROUTINE StatusRoutine
602 );
603 PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
604   LPVOID BaseAddress, DWORD FileLength, 
605   LPDWORD HeaderSum, LPDWORD CheckSum
606 );
607 BOOL WINAPI EnumerateLoadedModules(
608   HANDLE hProcess,
609   PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
610   PVOID UserContext
611 );
612 HANDLE WINAPI FindDebugInfoFile(
613   LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath
614 );
615 HANDLE WINAPI FindExecutableImage(
616   LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath
617 );
618 BOOL WINAPI GetImageConfigInformation(
619   PLOADED_IMAGE LoadedImage, 
620   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
621 );
622 DWORD WINAPI GetImageUnusedHeaderBytes(
623   PLOADED_IMAGE LoadedImage,
624   LPDWORD SizeUnusedHeaderBytes
625 );
626 DWORD WINAPI GetTimestampForLoadedLibrary(
627   HMODULE Module
628 );
629 BOOL WINAPI ImageAddCertificate(
630   HANDLE FileHandle, PWIN_CERTIFICATE Certificate, PDWORD Index
631 );
632 PVOID WINAPI ImageDirectoryEntryToData(
633   PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
634 );
635 BOOL WINAPI ImageEnumerateCertificates(
636   HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
637   PDWORD Indices, DWORD IndexCount
638 );
639 BOOL WINAPI ImageGetCertificateData(
640   HANDLE FileHandle, DWORD CertificateIndex,
641   PWIN_CERTIFICATE Certificate, PDWORD RequiredLength
642 );
643 BOOL WINAPI ImageGetCertificateHeader(
644   HANDLE FileHandle, DWORD CertificateIndex,
645   PWIN_CERTIFICATE Certificateheader
646 );
647 BOOL WINAPI ImageGetDigestStream(
648   HANDLE FileHandle, DWORD DigestLevel,
649   DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle
650 );
651 PLOADED_IMAGE WINAPI ImageLoad(
652   LPSTR DllName, LPSTR DllPath
653 );
654 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
655   PVOID Base
656 );
657 BOOL WINAPI ImageRemoveCertificate(
658   HANDLE FileHandle, DWORD Index
659 );
660 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
661   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva
662 );
663 PVOID WINAPI ImageRvaToVa(
664   PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
665   PIMAGE_SECTION_HEADER *LastRvaSection
666 );
667 BOOL WINAPI ImageUnload(
668   PLOADED_IMAGE LoadedImage
669 );
670 PAPI_VERSION WINAPI ImagehlpApiVersion(
671   void 
672 );
673 PAPI_VERSION WINAPI ImagehlpApiVersionEx(
674   PAPI_VERSION AppVersion
675 );
676 BOOL WINAPI MakeSureDirectoryPathExists(
677   LPCSTR DirPath
678 );
679 BOOL WINAPI MapAndLoad(
680   LPSTR ImageName, LPSTR DllPath, PLOADED_IMAGE LoadedImage,
681   BOOL DotDll, BOOL ReadOnly
682 );
683 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
684   HANDLE FileHandle, LPSTR FileName,
685   LPSTR SymbolPath, DWORD ImageBase
686 );
687 DWORD WINAPI MapFileAndCheckSumA(
688   LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
689 );
690 DWORD WINAPI MapFileAndCheckSumW(
691   LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
692 );
693 BOOL WINAPI ReBaseImage(
694   LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
695   BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
696   ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
697   ULONG *NewImageBase, ULONG TimeStamp
698 );
699 BOOL WINAPI RemovePrivateCvSymbolic(
700   PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
701 );
702 VOID WINAPI RemoveRelocations(
703   PCHAR ImageName
704 );
705 BOOL WINAPI SearchTreeForFile(
706   LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer
707 );
708 BOOL WINAPI SetImageConfigInformation(
709   PLOADED_IMAGE LoadedImage,
710   PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
711 );
712 BOOL WINAPI SplitSymbols(
713   LPSTR ImageName, LPSTR SymbolsPath, 
714   LPSTR SymbolFilePath, DWORD Flags
715 );
716 BOOL WINAPI StackWalk(
717   DWORD MachineType, HANDLE hProcess, HANDLE hThread,
718   PSTACKFRAME StackFrame, PVOID ContextRecord,
719   PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
720   PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
721   PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
722   PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
723 );
724 BOOL WINAPI SymCleanup(
725   HANDLE hProcess
726 );
727 BOOL WINAPI SymEnumerateModules(
728   HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
729   PVOID UserContext
730 );
731 BOOL WINAPI SymEnumerateSymbols(
732   HANDLE hProcess, DWORD BaseOfDll,
733   PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
734 );
735 PVOID WINAPI SymFunctionTableAccess(
736   HANDLE hProcess, DWORD AddrBase
737 );
738 DWORD WINAPI SymGetModuleBase(
739   HANDLE hProcess, DWORD dwAddr
740 );
741 BOOL WINAPI SymGetModuleInfo(
742   HANDLE hProcess, DWORD dwAddr,
743   PIMAGEHLP_MODULE ModuleInfo
744 );
745 DWORD WINAPI SymGetOptions(
746   void
747 );
748 BOOL WINAPI SymGetSearchPath(
749   HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength
750 );
751 BOOL WINAPI SymGetSymFromAddr(
752   HANDLE hProcess, DWORD dwAddr,
753   PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol
754 );
755 BOOL WINAPI SymGetSymFromName(
756   HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol
757 );
758 BOOL WINAPI SymGetSymNext(
759   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
760 );
761 BOOL WINAPI SymGetSymPrev(
762   HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
763 );
764 BOOL WINAPI SymInitialize(
765   HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess
766 );
767 BOOL WINAPI SymLoadModule(
768   HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
769   DWORD BaseOfDll, DWORD SizeOfDll
770 );
771 BOOL WINAPI SymRegisterCallback(
772   HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
773   PVOID UserContext
774 );
775 DWORD WINAPI SymSetOptions(
776   DWORD SymOptions
777 );
778 BOOL WINAPI SymSetSearchPath(
779   HANDLE hProcess, LPSTR szSearchPath
780 );
781 BOOL WINAPI SymUnDName(
782   PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength
783 );
784 BOOL WINAPI SymUnloadModule(
785   HANDLE hProcess, DWORD BaseOfDll
786 );
787 BOOL WINAPI TouchFileTimes(
788   HANDLE FileHandle, LPSYSTEMTIME lpSystemTime
789 );
790 DWORD WINAPI UnDecorateSymbolName(
791   LPCSTR DecoratedName, LPSTR UnDecoratedName,
792   DWORD UndecoratedLength, DWORD Flags
793 );
794 BOOL WINAPI UnMapAndLoad(
795   PLOADED_IMAGE LoadedImage
796 );
797 BOOL WINAPI UnmapDebugInformation(
798   PIMAGE_DEBUG_INFORMATION DebugInfo
799 );
800 BOOL WINAPI UpdateDebugInfoFile(
801   LPSTR ImageFileName, LPSTR SymbolPath,
802   LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders
803 );
804 BOOL WINAPI UpdateDebugInfoFileEx(
805   LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
806   PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum
807 );
808
809 /***********************************************************************
810  * Wine specific
811  */
812
813 extern HANDLE IMAGEHLP_hHeap;
814
815 #endif  /* __WINE_IMAGEHLP_H */
816
817
818