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