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