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
26 #endif /* defined(__cplusplus) */
28 /***********************************************************************
32 typedef PVOID DIGEST_HANDLE;
34 /***********************************************************************
38 typedef enum _IMAGEHLP_STATUS_REASON {
42 BindImportModuleFailed,
43 BindImportProcedureFailed,
49 BindExpandFileHeaders,
51 BindMismatchedSymbols,
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
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 {
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
113 SymSym /* .sym file */
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 /***********************************************************************
144 typedef struct _LOADED_IMAGE {
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;
157 } LOADED_IMAGE, *PLOADED_IMAGE;
159 typedef struct _WIN_CERTIFICATE {
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 {
171 } API_VERSION, *PAPI_VERSION;
173 typedef struct _IMAGE_DEBUG_INFORMATION {
178 USHORT Characteristics;
183 DWORD NumberOfSections;
184 PIMAGE_SECTION_HEADER Sections;
186 DWORD ExportedNamesSize;
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;
210 PIMAGE_DEBUG_DIRECTORY DebugDirectory;
211 DWORD NumberOfDebugDirectories;
214 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
216 typedef struct _ADDRESS {
220 } ADDRESS, *PADDRESS;
222 typedef struct _KDHELP {
224 DWORD ThCallbackStack;
227 DWORD KiCallUserMode;
228 DWORD KeUserCallbackDispatcher;
229 DWORD SystemRangeStart;
232 typedef struct _STACKFRAME {
237 PVOID FuncTableEntry;
243 } STACKFRAME, *PSTACKFRAME, *LPSTACKFRAME;
245 typedef struct _IMAGEHLP_SYMBOL {
251 CHAR Name[ANYSIZE_ARRAY];
252 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
254 typedef struct _IMAGEHLP_MODULE {
264 CHAR LoadedImageName[256];
265 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
267 typedef struct _IMAGEHLP_LINE {
273 } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
275 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
280 CHAR FileName[MAX_PATH];
282 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
284 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
287 PIMAGEHLP_SYMBOL Symbol;
288 ULONG SelectedSymbol;
289 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
291 /***********************************************************************
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,
309 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
310 LPSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize,
314 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
315 HANDLE hProcess, ULONG ActionCode, PVOID CallbackData,
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 /***********************************************************************
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(
356 PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
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(
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(
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(
420 PAPI_VERSION WINAPI ImagehlpApiVersionEx(
421 PAPI_VERSION AppVersion
423 BOOL WINAPI MakeSureDirectoryPathExists(
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(
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(
474 BOOL WINAPI SymEnumerateModules(
475 HANDLE hProcess, PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
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(
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,
522 DWORD WINAPI SymSetOptions(
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
558 #endif /* defined(__cplusplus) */
560 #endif /* __WINE_IMAGEHLP_H */