Use docbook2txt to generate the text output instead of adhoc hacks.
[wine/multimedia.git] / include / imagehlp.h
blob2206cd03598425dacb8248a5b2e8a9818843cf19
1 /*
2 * Declarations for IMAGEHLP
4 * Copyright (C) 1998 Patrik Stridvall
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.
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.
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
21 #ifndef __WINE_IMAGEHLP_H
22 #define __WINE_IMAGEHLP_H
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* defined(__cplusplus) */
28 /***********************************************************************
29 * Types
32 typedef PVOID DIGEST_HANDLE;
34 /***********************************************************************
35 * Enums/Defines
38 typedef enum _IMAGEHLP_STATUS_REASON {
39 BindOutOfMemory,
40 BindRvaToVaFailed,
41 BindNoRoomInImage,
42 BindImportModuleFailed,
43 BindImportProcedureFailed,
44 BindImportModule,
45 BindImportProcedure,
46 BindForwarder,
47 BindForwarderNOT,
48 BindImageModified,
49 BindExpandFileHeaders,
50 BindImageComplete,
51 BindMismatchedSymbols,
52 BindSymbolsNotUpdated
53 } IMAGEHLP_STATUS_REASON;
55 #define BIND_NO_BOUND_IMPORTS 0x00000001
56 #define BIND_NO_UPDATE 0x00000002
57 #define BIND_ALL_IMAGES 0x00000004
58 #define BIND_CACHE_IMPORT_DLLS 0x00000008
60 #define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 0x01
61 #define CERT_PE_IMAGE_DIGEST_RESOURCES 0x02
62 #define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
63 #define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 0x08
65 #define CERT_SECTION_TYPE_ANY 0xFF
67 #define WIN_CERT_REVISION_1_0 0x0100
68 #define WIN_CERT_REVISION_2_0 0x0200
70 #define WIN_CERT_TYPE_X509 0x0001 /* X.509 Certificate */
71 #define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 /* PKCS SignedData */
72 #define WIN_CERT_TYPE_RESERVED_1 0x0003 /* Reserved */
74 #define SPLITSYM_REMOVE_PRIVATE 0x00000001
75 #define SPLITSYM_EXTRACT_ALL 0x00000002
76 #define SPLITSYM_SYMBOLPATH_IS_SRC 0x00000004
78 #define FRAME_FPO 0
79 #define FRAME_TRAP 1
80 #define FRAME_TSS 2
81 #define FRAME_NONFPO 3
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
89 typedef enum _ADRESS_MODE {
90 AddrMode1616,
91 AddrMode1632,
92 AddrModeReal,
93 AddrModeFlat
94 } ADDRESS_MODE;
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
103 #define SYMF_OMAP_GENERATED 0x00000001
104 #define SYMF_OMAP_MODIFIED 0x00000002
106 typedef enum {
107 SymNone,
108 SymCoff,
109 SymCv,
110 SymPdb,
111 SymExport,
112 SymDeferred,
113 SymSym /* .sym file */
114 } SYM_TYPE;
116 #define UNDNAME_COMPLETE 0x0000
117 #define UNDNAME_NO_LEADING_UNDERSCORES 0x0001
118 #define UNDNAME_NO_MS_KEYWORDS 0x0002
119 #define UNDNAME_NO_FUNCTION_RETURNS 0x0004
120 #define UNDNAME_NO_ALLOCATION_MODEL 0x0008
121 #define UNDNAME_NO_ALLOCATION_LANGUAGE 0x0010
122 #define UNDNAME_NO_MS_THISTYPE 0x0020
123 #define UNDNAME_NO_CV_THISTYPE 0x0040
124 #define UNDNAME_NO_THISTYPE 0x0060
125 #define UNDNAME_NO_ACCESS_SPECIFIERS 0x0080
126 #define UNDNAME_NO_THROW_SIGNATURES 0x0100
127 #define UNDNAME_NO_MEMBER_TYPE 0x0200
128 #define UNDNAME_NO_RETURN_UDT_MODEL 0x0400
129 #define UNDNAME_32_BIT_DECODE 0x0800
130 #define UNDNAME_NAME_ONLY 0x1000
131 #define UNDNAME_NO_ARGUMENTS 0x2000
132 #define UNDNAME_NO_SPECIAL_SYMS 0x4000
134 #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
135 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
136 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
137 #define CBA_SYMBOLS_UNLOADED 0x00000004
138 #define CBA_DUPLICATE_SYMBOL 0x00000005
140 /***********************************************************************
141 * Structures
144 typedef struct _LOADED_IMAGE {
145 LPSTR ModuleName;
146 HANDLE hFile;
147 PUCHAR MappedAddress;
148 PIMAGE_NT_HEADERS FileHeader;
149 PIMAGE_SECTION_HEADER LastRvaSection;
150 ULONG NumberOfSections;
151 PIMAGE_SECTION_HEADER Sections;
152 ULONG Characteristics;
153 BOOLEAN fSystemImage;
154 BOOLEAN fDOSImage;
155 LIST_ENTRY Links;
156 ULONG SizeOfImage;
157 } LOADED_IMAGE, *PLOADED_IMAGE;
159 typedef struct _WIN_CERTIFICATE {
160 DWORD dwLength;
161 WORD wRevision; /* WIN_CERT_REVISON_xxx */
162 WORD wCertificateType; /* WIN_CERT_TYPE_xxx */
163 BYTE bCertificate[ANYSIZE_ARRAY];
164 } WIN_CERTIFICATE, *PWIN_CERTIFICATE;
166 typedef struct _API_VERSION {
167 USHORT MajorVersion;
168 USHORT MinorVersion;
169 USHORT Revision;
170 USHORT Reserved;
171 } API_VERSION, *PAPI_VERSION;
173 typedef struct _IMAGE_DEBUG_INFORMATION {
174 LIST_ENTRY List;
175 DWORD Size;
176 PVOID MappedBase;
177 USHORT Machine;
178 USHORT Characteristics;
179 DWORD CheckSum;
180 DWORD ImageBase;
181 DWORD SizeOfImage;
183 DWORD NumberOfSections;
184 PIMAGE_SECTION_HEADER Sections;
186 DWORD ExportedNamesSize;
187 LPSTR ExportedNames;
189 DWORD NumberOfFunctionTableEntries;
190 PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
191 DWORD LowestFunctionStartingAddress;
192 DWORD HighestFunctionEndingAddress;
194 DWORD NumberOfFpoTableEntries;
195 PFPO_DATA FpoTableEntries;
197 DWORD SizeOfCoffSymbols;
198 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
200 DWORD SizeOfCodeViewSymbols;
201 PVOID CodeViewSymbols;
203 LPSTR ImageFilePath;
204 LPSTR ImageFileName;
205 LPSTR DebugFilePath;
207 DWORD TimeDateStamp;
209 BOOL RomImage;
210 PIMAGE_DEBUG_DIRECTORY DebugDirectory;
211 DWORD NumberOfDebugDirectories;
213 DWORD Reserved[3];
214 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
216 typedef struct _ADDRESS {
217 DWORD Offset;
218 WORD Segment;
219 ADDRESS_MODE Mode;
220 } ADDRESS, *PADDRESS;
222 typedef struct _KDHELP {
223 DWORD Thread;
224 DWORD ThCallbackStack;
225 DWORD NextCallback;
226 DWORD FramePointer;
227 DWORD KiCallUserMode;
228 DWORD KeUserCallbackDispatcher;
229 DWORD SystemRangeStart;
230 } KDHELP, *PKDHELP;
232 typedef struct _STACKFRAME {
233 ADDRESS AddrPC;
234 ADDRESS AddrReturn;
235 ADDRESS AddrFrame;
236 ADDRESS AddrStack;
237 PVOID FuncTableEntry;
238 DWORD Params[4];
239 BOOL Far;
240 BOOL Virtual;
241 DWORD Reserved[3];
242 KDHELP KdHelp;
243 } STACKFRAME, *PSTACKFRAME, *LPSTACKFRAME;
245 typedef struct _IMAGEHLP_SYMBOL {
246 DWORD SizeOfStruct;
247 DWORD Address;
248 DWORD Size;
249 DWORD Flags;
250 DWORD MaxNameLength;
251 CHAR Name[ANYSIZE_ARRAY];
252 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
254 typedef struct _IMAGEHLP_MODULE {
255 DWORD SizeOfStruct;
256 DWORD BaseOfImage;
257 DWORD ImageSize;
258 DWORD TimeDateStamp;
259 DWORD CheckSum;
260 DWORD NumSyms;
261 SYM_TYPE SymType;
262 CHAR ModuleName[32];
263 CHAR ImageName[256];
264 CHAR LoadedImageName[256];
265 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
267 typedef struct _IMAGEHLP_LINE {
268 DWORD SizeOfStruct;
269 DWORD Key;
270 DWORD LineNumber;
271 PCHAR FileName;
272 DWORD Address;
273 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
275 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
276 DWORD SizeOfStruct;
277 DWORD BaseOfImage;
278 DWORD CheckSum;
279 DWORD TimeDateStamp;
280 CHAR FileName[MAX_PATH];
281 BOOLEAN Reparse;
282 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
284 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
285 DWORD SizeOfStruct;
286 DWORD NumberOfDups;
287 PIMAGEHLP_SYMBOL Symbol;
288 ULONG SelectedSymbol;
289 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
291 /***********************************************************************
292 * Callbacks
295 typedef BOOL (CALLBACK *PIMAGEHLP_STATUS_ROUTINE)(
296 IMAGEHLP_STATUS_REASON Reason, LPSTR ImageName, LPSTR DllName,
297 ULONG Va, ULONG Parameter
300 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
301 LPSTR ModuleName, ULONG BaseOfDll, PVOID UserContext
304 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
305 LPSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize,
306 PVOID UserContext
309 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
310 LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
311 PVOID UserContext
314 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
315 HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
316 PVOID UserContext
319 typedef BOOL (CALLBACK *DIGEST_FUNCTION)(
320 DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength
323 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
324 HANDLE hProcess, LPCVOID lpBaseAddress, PVOID lpBuffer,
325 DWORD nSize, PDWORD lpNumberOfBytesRead
328 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
329 HANDLE hProcess, DWORD AddrBase
332 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(
333 HANDLE hProcess, DWORD ReturnAddress);
335 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
336 HANDLE hProcess, HANDLE hThread, PADDRESS lpaddr
339 /***********************************************************************
340 * Functions
343 BOOL WINAPI BindImage(
344 LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath
346 BOOL WINAPI BindImageEx(
347 DWORD Flags, LPSTR ImageName, LPSTR DllPath, LPSTR SymbolPath,
348 PIMAGEHLP_STATUS_ROUTINE StatusRoutine
350 PIMAGE_NT_HEADERS WINAPI CheckSumMappedFile(
351 LPVOID BaseAddress, DWORD FileLength,
352 LPDWORD HeaderSum, LPDWORD CheckSum
354 BOOL WINAPI EnumerateLoadedModules(
355 HANDLE hProcess,
356 PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
357 PVOID UserContext
359 HANDLE WINAPI FindDebugInfoFile(
360 LPSTR FileName, LPSTR SymbolPath, LPSTR DebugFilePath
362 HANDLE WINAPI FindExecutableImage(
363 LPSTR FileName, LPSTR SymbolPath, LPSTR ImageFilePath
365 BOOL WINAPI GetImageConfigInformation(
366 PLOADED_IMAGE LoadedImage,
367 PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
369 DWORD WINAPI GetImageUnusedHeaderBytes(
370 PLOADED_IMAGE LoadedImage,
371 LPDWORD SizeUnusedHeaderBytes
373 DWORD WINAPI GetTimestampForLoadedLibrary(
374 HMODULE Module
376 BOOL WINAPI ImageAddCertificate(
377 HANDLE FileHandle, PWIN_CERTIFICATE Certificate, PDWORD Index
379 PVOID WINAPI ImageDirectoryEntryToData(
380 PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size
382 BOOL WINAPI ImageEnumerateCertificates(
383 HANDLE FileHandle, WORD TypeFilter, PDWORD CertificateCount,
384 PDWORD Indices, DWORD IndexCount
386 BOOL WINAPI ImageGetCertificateData(
387 HANDLE FileHandle, DWORD CertificateIndex,
388 PWIN_CERTIFICATE Certificate, PDWORD RequiredLength
390 BOOL WINAPI ImageGetCertificateHeader(
391 HANDLE FileHandle, DWORD CertificateIndex,
392 PWIN_CERTIFICATE Certificateheader
394 BOOL WINAPI ImageGetDigestStream(
395 HANDLE FileHandle, DWORD DigestLevel,
396 DIGEST_FUNCTION DigestFunction, DIGEST_HANDLE DigestHandle
398 PLOADED_IMAGE WINAPI ImageLoad(
399 LPSTR DllName, LPSTR DllPath
401 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
402 PVOID Base
404 BOOL WINAPI ImageRemoveCertificate(
405 HANDLE FileHandle, DWORD Index
407 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(
408 PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva
410 PVOID WINAPI ImageRvaToVa(
411 PIMAGE_NT_HEADERS NtHeaders, PVOID Base, ULONG Rva,
412 PIMAGE_SECTION_HEADER *LastRvaSection
414 BOOL WINAPI ImageUnload(
415 PLOADED_IMAGE LoadedImage
417 PAPI_VERSION WINAPI ImagehlpApiVersion(
418 void
420 PAPI_VERSION WINAPI ImagehlpApiVersionEx(
421 PAPI_VERSION AppVersion
423 BOOL WINAPI MakeSureDirectoryPathExists(
424 LPCSTR DirPath
426 BOOL WINAPI MapAndLoad(
427 LPSTR ImageName, LPSTR DllPath, PLOADED_IMAGE LoadedImage,
428 BOOL DotDll, BOOL ReadOnly
430 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(
431 HANDLE FileHandle, LPSTR FileName,
432 LPSTR SymbolPath, DWORD ImageBase
434 DWORD WINAPI MapFileAndCheckSumA(
435 LPSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
437 DWORD WINAPI MapFileAndCheckSumW(
438 LPWSTR Filename, LPDWORD HeaderSum, LPDWORD CheckSum
440 BOOL WINAPI ReBaseImage(
441 LPSTR CurrentImageName, LPSTR SymbolPath, BOOL fReBase,
442 BOOL fRebaseSysfileOk, BOOL fGoingDown, ULONG CheckImageSize,
443 ULONG *OldImageSize, ULONG *OldImageBase, ULONG *NewImageSize,
444 ULONG *NewImageBase, ULONG TimeStamp
446 BOOL WINAPI RemovePrivateCvSymbolic(
447 PCHAR DebugData, PCHAR *NewDebugData, ULONG *NewDebugSize
449 VOID WINAPI RemoveRelocations(
450 PCHAR ImageName
452 BOOL WINAPI SearchTreeForFile(
453 LPSTR RootPath, LPSTR InputPathName, LPSTR OutputPathBuffer
455 BOOL WINAPI SetImageConfigInformation(
456 PLOADED_IMAGE LoadedImage,
457 PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
459 BOOL WINAPI SplitSymbols(
460 LPSTR ImageName, LPSTR SymbolsPath,
461 LPSTR SymbolFilePath, DWORD Flags
463 BOOL WINAPI StackWalk(
464 DWORD MachineType, HANDLE hProcess, HANDLE hThread,
465 PSTACKFRAME StackFrame, PVOID ContextRecord,
466 PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
467 PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
468 PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
469 PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
471 BOOL WINAPI SymCleanup(
472 HANDLE hProcess
474 BOOL WINAPI SymEnumerateModules(
475 HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
476 PVOID UserContext
478 BOOL WINAPI SymEnumerateSymbols(
479 HANDLE hProcess, DWORD BaseOfDll,
480 PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext
482 PVOID WINAPI SymFunctionTableAccess(
483 HANDLE hProcess, DWORD AddrBase
485 DWORD WINAPI SymGetModuleBase(
486 HANDLE hProcess, DWORD dwAddr
488 BOOL WINAPI SymGetModuleInfo(
489 HANDLE hProcess, DWORD dwAddr,
490 PIMAGEHLP_MODULE ModuleInfo
492 DWORD WINAPI SymGetOptions(
493 void
495 BOOL WINAPI SymGetSearchPath(
496 HANDLE hProcess, LPSTR szSearchPath, DWORD SearchPathLength
498 BOOL WINAPI SymGetSymFromAddr(
499 HANDLE hProcess, DWORD dwAddr,
500 PDWORD pdwDisplacement, PIMAGEHLP_SYMBOL Symbol
502 BOOL WINAPI SymGetSymFromName(
503 HANDLE hProcess, LPSTR Name, PIMAGEHLP_SYMBOL Symbol
505 BOOL WINAPI SymGetSymNext(
506 HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
508 BOOL WINAPI SymGetSymPrev(
509 HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol
511 BOOL WINAPI SymInitialize(
512 HANDLE hProcess, LPSTR UserSearchPath, BOOL fInvadeProcess
514 BOOL WINAPI SymLoadModule(
515 HANDLE hProcess, HANDLE hFile, LPSTR ImageName, LPSTR ModuleName,
516 DWORD BaseOfDll, DWORD SizeOfDll
518 BOOL WINAPI SymRegisterCallback(
519 HANDLE hProcess, PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
520 PVOID UserContext
522 DWORD WINAPI SymSetOptions(
523 DWORD SymOptions
525 BOOL WINAPI SymSetSearchPath(
526 HANDLE hProcess, LPSTR szSearchPath
528 BOOL WINAPI SymUnDName(
529 PIMAGEHLP_SYMBOL sym, LPSTR UnDecName, DWORD UnDecNameLength
531 BOOL WINAPI SymUnloadModule(
532 HANDLE hProcess, DWORD BaseOfDll
534 BOOL WINAPI TouchFileTimes(
535 HANDLE FileHandle, LPSYSTEMTIME lpSystemTime
537 DWORD WINAPI UnDecorateSymbolName(
538 LPCSTR DecoratedName, LPSTR UnDecoratedName,
539 DWORD UndecoratedLength, DWORD Flags
541 BOOL WINAPI UnMapAndLoad(
542 PLOADED_IMAGE LoadedImage
544 BOOL WINAPI UnmapDebugInformation(
545 PIMAGE_DEBUG_INFORMATION DebugInfo
547 BOOL WINAPI UpdateDebugInfoFile(
548 LPSTR ImageFileName, LPSTR SymbolPath,
549 LPSTR DebugFilePath, PIMAGE_NT_HEADERS NtHeaders
551 BOOL WINAPI UpdateDebugInfoFileEx(
552 LPSTR ImageFileName, LPSTR SymbolPath, LPSTR DebugFilePath,
553 PIMAGE_NT_HEADERS NtHeaders, DWORD OldChecksum
556 #ifdef __cplusplus
557 } /* extern "C" */
558 #endif /* defined(__cplusplus) */
560 #endif /* __WINE_IMAGEHLP_H */