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 */