Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenimagehlp.h
Go to the documentation of this file.
00001 /* 00002 imagehlp.h - Include file for IMAGEHLP.DLL APIs 00003 00004 Written by Mumit Khan <khan@nanotech.wisc.edu> 00005 00006 This file is part of a free library for the Win32 API. 00007 00008 NOTE: This strictly does not belong in the Win32 API since it's 00009 really part of Platform SDK. However,GDB needs it and we might 00010 as well provide it here. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00015 00016 */ 00017 00018 #ifndef _IMAGEHLP_H 00019 #define _IMAGEHLP_H 00020 00021 #ifdef __cplusplus 00022 extern "C" { 00023 #endif 00024 00025 #include <wintrust.h> 00026 00027 #define API_VERSION_NUMBER 7 00028 #define BIND_NO_BOUND_IMPORTS 0x00000001 00029 #define BIND_NO_UPDATE 0x00000002 00030 #define BIND_ALL_IMAGES 0x00000004 00031 #define BIND_CACHE_IMPORT_DLLS 0x00000008 00032 #define CBA_DEFERRED_SYMBOL_LOAD_START 1 00033 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 2 00034 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 3 00035 #define CBA_SYMBOLS_UNLOADED 4 00036 #define CBA_DUPLICATE_SYMBOL 5 00037 #define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 1 00038 #define CERT_PE_IMAGE_DIGEST_RESOURCES 2 00039 #define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 4 00040 #define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 8 00041 #define CERT_SECTION_TYPE_ANY 255 00042 #define CHECKSUM_SUCCESS 0 00043 #define CHECKSUM_OPEN_FAILURE 1 00044 #define CHECKSUM_MAP_FAILURE 2 00045 #define CHECKSUM_MAPVIEW_FAILURE 3 00046 #define CHECKSUM_UNICODE_FAILURE 4 00047 #define IMAGE_SEPARATION 65536 00048 #define SPLITSYM_REMOVE_PRIVATE 1 00049 #define SPLITSYM_EXTRACT_ALL 2 00050 #define SPLITSYM_SYMBOLPATH_IS_SRC 4 00051 #define SYMF_OMAP_GENERATED 1 00052 #define SYMF_OMAP_MODIFIED 2 00053 #define SYMOPT_CASE_INSENSITIVE 1 00054 #define SYMOPT_UNDNAME 2 00055 #define SYMOPT_DEFERRED_LOADS 4 00056 #define SYMOPT_NO_CPP 8 00057 #define SYMOPT_LOAD_LINES 16 00058 #define SYMOPT_OMAP_FIND_NEAREST 32 00059 #define UNDNAME_COMPLETE 0 00060 #define UNDNAME_NO_LEADING_UNDERSCORES 1 00061 #define UNDNAME_NO_MS_KEYWORDS 2 00062 #define UNDNAME_NO_FUNCTION_RETURNS 4 00063 #define UNDNAME_NO_ALLOCATION_MODEL 8 00064 #define UNDNAME_NO_ALLOCATION_LANGUAGE 16 00065 #define UNDNAME_NO_MS_THISTYPE 32 00066 #define UNDNAME_NO_CV_THISTYPE 64 00067 #define UNDNAME_NO_THISTYPE 96 00068 #define UNDNAME_NO_ACCESS_SPECIFIERS 128 00069 #define UNDNAME_NO_THROW_SIGNATURES 256 00070 #define UNDNAME_NO_MEMBER_TYPE 512 00071 #define UNDNAME_NO_RETURN_UDT_MODEL 1024 00072 #define UNDNAME_32_BIT_DECODE 2048 00073 #define UNDNAME_NAME_ONLY 4096 00074 #define UNDNAME_NO_ARGUMENTS 8192 00075 #define UNDNAME_NO_SPECIAL_SYMS 16384 00076 00077 #ifdef _IMAGEHLP_SOURCE_ 00078 #define IMAGEAPI __stdcall 00079 #define DBHLP_DEPRECIATED 00080 #else 00081 #define IMAGEAPI DECLSPEC_IMPORT __stdcall 00082 #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) 00083 #define DBHLP_DEPRECIATED __declspec(deprecated) 00084 #else 00085 #define DBHLP_DEPRECIATED 00086 #endif 00087 #endif 00088 00089 #define DBHLPAPI IMAGEAPI 00090 00091 #ifndef RC_INVOKED 00092 00093 typedef enum _IMAGEHLP_STATUS_REASON { 00094 BindOutOfMemory, 00095 BindRvaToVaFailed, 00096 BindNoRoomInImage, 00097 BindImportModuleFailed, 00098 BindImportProcedureFailed, 00099 BindImportModule, 00100 BindImportProcedure, 00101 BindForwarder, 00102 BindForwarderNOT, 00103 BindImageModified, 00104 BindExpandFileHeaders, 00105 BindImageComplete, 00106 BindMismatchedSymbols, 00107 BindSymbolsNotUpdated 00108 } IMAGEHLP_STATUS_REASON; 00109 typedef BOOL(WINAPI*PIMAGEHLP_STATUS_ROUTINE)(IMAGEHLP_STATUS_REASON,LPSTR,LPSTR,ULONG,ULONG); 00110 typedef struct _LOADED_IMAGE { 00111 PSTR ModuleName; 00112 HANDLE hFile; 00113 PUCHAR MappedAddress; 00114 #ifdef _IMAGEHLP64 00115 PIMAGE_NT_HEADERS64 FileHeader; 00116 #else 00117 PIMAGE_NT_HEADERS32 FileHeader; 00118 #endif 00119 PIMAGE_SECTION_HEADER LastRvaSection; 00120 ULONG NumberOfSections; 00121 PIMAGE_SECTION_HEADER Sections; 00122 ULONG Characteristics; 00123 BOOLEAN fSystemImage; 00124 BOOLEAN fDOSImage; 00125 BOOLEAN fReadOnly; 00126 UCHAR Version; 00127 LIST_ENTRY Links; 00128 ULONG SizeOfImage; 00129 } LOADED_IMAGE,*PLOADED_IMAGE; 00130 typedef struct _IMAGE_DEBUG_INFORMATION { 00131 LIST_ENTRY List; 00132 DWORD Size; 00133 PVOID MappedBase; 00134 USHORT Machine; 00135 USHORT Characteristics; 00136 DWORD CheckSum; 00137 DWORD ImageBase; 00138 DWORD SizeOfImage; 00139 DWORD NumberOfSections; 00140 PIMAGE_SECTION_HEADER Sections; 00141 DWORD ExportedNamesSize; 00142 LPSTR ExportedNames; 00143 DWORD NumberOfFunctionTableEntries; 00144 PIMAGE_FUNCTION_ENTRY FunctionTableEntries; 00145 DWORD LowestFunctionStartingAddress; 00146 DWORD HighestFunctionEndingAddress; 00147 DWORD NumberOfFpoTableEntries; 00148 PFPO_DATA FpoTableEntries; 00149 DWORD SizeOfCoffSymbols; 00150 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; 00151 DWORD SizeOfCodeViewSymbols; 00152 PVOID CodeViewSymbols; 00153 LPSTR ImageFilePath; 00154 LPSTR ImageFileName; 00155 LPSTR DebugFilePath; 00156 DWORD TimeDateStamp; 00157 BOOL RomImage; 00158 PIMAGE_DEBUG_DIRECTORY DebugDirectory; 00159 DWORD NumberOfDebugDirectories; 00160 DWORD Reserved[3]; 00161 } IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION; 00162 typedef enum { 00163 AddrMode1616, 00164 AddrMode1632, 00165 AddrModeReal, 00166 AddrModeFlat 00167 } ADDRESS_MODE; 00168 typedef struct _tagADDRESS { 00169 DWORD Offset; 00170 WORD Segment; 00171 ADDRESS_MODE Mode; 00172 } ADDRESS,*LPADDRESS; 00173 typedef struct _KDHELP { 00174 DWORD Thread; 00175 DWORD ThCallbackStack; 00176 DWORD NextCallback; 00177 DWORD FramePointer; 00178 DWORD KiCallUserMode; 00179 DWORD KeUserCallbackDispatcher; 00180 DWORD SystemRangeStart; 00181 } KDHELP,*PKDHELP; 00182 typedef struct _tagSTACKFRAME { 00183 ADDRESS AddrPC; 00184 ADDRESS AddrReturn; 00185 ADDRESS AddrFrame; 00186 ADDRESS AddrStack; 00187 LPVOID FuncTableEntry; 00188 DWORD Params[4]; 00189 BOOL Far; 00190 BOOL Virtual; 00191 DWORD Reserved[3]; 00192 KDHELP KdHelp; 00193 } STACKFRAME,*LPSTACKFRAME; 00194 typedef BOOL(WINAPI*PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE ,LPCVOID,LPVOID,DWORD,LPDWORD); 00195 typedef LPVOID(WINAPI*PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE,DWORD); 00196 typedef DWORD(WINAPI*PGET_MODULE_BASE_ROUTINE)(HANDLE,DWORD); 00197 typedef DWORD(WINAPI*PTRANSLATE_ADDRESS_ROUTINE)(HANDLE,HANDLE,LPADDRESS); 00198 typedef struct API_VERSION { 00199 USHORT MajorVersion; 00200 USHORT MinorVersion; 00201 USHORT Revision; 00202 USHORT Reserved; 00203 } API_VERSION,*LPAPI_VERSION; 00204 typedef BOOL(CALLBACK*PSYM_ENUMMODULES_CALLBACK)(LPSTR,ULONG,PVOID); 00205 typedef BOOL(CALLBACK*PSYM_ENUMSYMBOLS_CALLBACK)(LPSTR,ULONG,ULONG,PVOID); 00206 typedef BOOL(CALLBACK*PENUMLOADED_MODULES_CALLBACK)(LPSTR,ULONG,ULONG,PVOID); 00207 typedef BOOL(CALLBACK*PSYMBOL_REGISTERED_CALLBACK)(HANDLE,ULONG,PVOID,PVOID); 00208 typedef enum { 00209 SymNone, 00210 SymCoff, 00211 SymCv, 00212 SymPdb, 00213 SymExport, 00214 SymDeferred, 00215 SymSym 00216 } SYM_TYPE; 00217 typedef struct _IMAGEHLP_SYMBOL { 00218 DWORD SizeOfStruct; 00219 DWORD Address; 00220 DWORD Size; 00221 DWORD Flags; 00222 DWORD MaxNameLength; 00223 CHAR Name[1]; 00224 } IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL; 00225 typedef struct _IMAGEHLP_MODULE { 00226 DWORD SizeOfStruct; 00227 DWORD BaseOfImage; 00228 DWORD ImageSize; 00229 DWORD TimeDateStamp; 00230 DWORD CheckSum; 00231 DWORD NumSyms; 00232 SYM_TYPE SymType; 00233 CHAR ModuleName[32]; 00234 CHAR ImageName[256]; 00235 CHAR LoadedImageName[256]; 00236 } IMAGEHLP_MODULE,*PIMAGEHLP_MODULE; 00237 typedef struct _IMAGEHLP_LINE { 00238 DWORD SizeOfStruct; 00239 DWORD Key; 00240 DWORD LineNumber; 00241 PCHAR FileName; 00242 DWORD Address; 00243 } IMAGEHLP_LINE,*PIMAGEHLP_LINE; 00244 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { 00245 DWORD SizeOfStruct; 00246 DWORD BaseOfImage; 00247 DWORD CheckSum; 00248 DWORD TimeDateStamp; 00249 CHAR FileName[MAX_PATH]; 00250 BOOLEAN Reparse; 00251 } IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD; 00252 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { 00253 DWORD SizeOfStruct; 00254 DWORD NumberOfDups; 00255 PIMAGEHLP_SYMBOL Symbol; 00256 ULONG SelectedSymbol; 00257 } IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL; 00258 typedef PVOID DIGEST_HANDLE; 00259 typedef BOOL(WINAPI*DIGEST_FUNCTION)(DIGEST_HANDLE refdata,PBYTE pData,DWORD dwLength); 00260 00261 PIMAGE_NT_HEADERS IMAGEAPI CheckSumMappedFile(LPVOID,DWORD,LPDWORD,LPDWORD); 00262 DWORD IMAGEAPI MapFileAndCheckSumA(PCSTR,LPDWORD,LPDWORD); 00263 DWORD IMAGEAPI MapFileAndCheckSumW(PCWSTR,LPDWORD,LPDWORD); 00264 BOOL IMAGEAPI TouchFileTimes(HANDLE,LPSYSTEMTIME); 00265 BOOL IMAGEAPI SplitSymbols(PSTR,PCSTR,PSTR,DWORD); 00266 HANDLE IMAGEAPI FindDebugInfoFile(PCSTR,PCSTR,PSTR); 00267 HANDLE IMAGEAPI FindExecutableImage(PCSTR,PCSTR,PSTR); 00268 BOOL IMAGEAPI UpdateDebugInfoFile(PCSTR,PCSTR,PSTR,PIMAGE_NT_HEADERS32); 00269 BOOL IMAGEAPI UpdateDebugInfoFileEx(PCSTR,PCSTR,PSTR,PIMAGE_NT_HEADERS32,DWORD); 00270 BOOL IMAGEAPI BindImage(IN PCSTR,IN PCSTR,IN PCSTR); 00271 BOOL IMAGEAPI BindImageEx(IN DWORD,IN LPCSTR,IN LPCSTR,IN LPCSTR,IN PIMAGEHLP_STATUS_ROUTINE); 00272 BOOL IMAGEAPI ReBaseImage(IN PCSTR,IN PCSTR,IN BOOL, IN BOOL,IN BOOL, IN ULONG, OUT ULONG*, OUT ULONG_PTR*, OUT ULONG*, IN OUT ULONG_PTR*, IN ULONG); 00273 00274 PLOADED_IMAGE IMAGEAPI ImageLoad(PCSTR,PCSTR); 00275 BOOL IMAGEAPI ImageUnload(PLOADED_IMAGE); 00276 PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader(IN PVOID); 00277 PVOID IMAGEAPI ImageDirectoryEntryToData(IN PVOID,IN BOOLEAN,IN USHORT,OUT PULONG); 00278 PVOID IMAGEAPI ImageDirectoryEntryToDataEx(IN PVOID Base, IN BOOLEAN MappedAsImage, IN USHORT DirectoryEntry, OUT PULONG Size, OUT PIMAGE_SECTION_HEADER *FoundSection OPTIONAL); 00279 PVOID IMAGEAPI ImageDirectoryEntryToData32(PVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size, PIMAGE_SECTION_HEADER *FoundHeader OPTIONAL, PIMAGE_FILE_HEADER FileHeader, PIMAGE_OPTIONAL_HEADER OptionalHeader); 00280 PIMAGE_SECTION_HEADER IMAGEAPI ImageRvaToSection(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG); 00281 PVOID IMAGEAPI ImageRvaToVa(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG,IN OUT PIMAGE_SECTION_HEADER*); 00282 BOOL IMAGEAPI MapAndLoad(PCSTR,PCSTR,PLOADED_IMAGE,BOOL,BOOL); 00283 BOOL IMAGEAPI GetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY); 00284 DWORD IMAGEAPI GetImageUnusedHeaderBytes(PLOADED_IMAGE,LPDWORD); 00285 BOOL IMAGEAPI SetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY); 00286 BOOL IMAGEAPI UnMapAndLoad(PLOADED_IMAGE); 00287 PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE,PCSTR,PCSTR,DWORD); 00288 BOOL IMAGEAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); 00289 BOOL IMAGEAPI SearchTreeForFile(PCSTR,PCSTR,PSTR); 00290 BOOL IMAGEAPI MakeSureDirectoryPathExists(LPCSTR); 00291 DWORD IMAGEAPI WINAPI UnDecorateSymbolName(LPCSTR,LPSTR,DWORD,DWORD); 00292 BOOL 00293 IMAGEAPI 00294 StackWalk(DWORD,HANDLE,HANDLE,LPSTACKFRAME,LPVOID,PREAD_PROCESS_MEMORY_ROUTINE,PFUNCTION_TABLE_ACCESS_ROUTINE,PGET_MODULE_BASE_ROUTINE,PTRANSLATE_ADDRESS_ROUTINE); 00295 LPAPI_VERSION IMAGEAPI ImagehlpApiVersion(VOID); 00296 LPAPI_VERSION IMAGEAPI ImagehlpApiVersionEx(LPAPI_VERSION); 00297 DWORD IMAGEAPI GetTimestampForLoadedLibrary(HMODULE); 00298 BOOL IMAGEAPI RemovePrivateCvSymbolic(PCHAR,PCHAR*,ULONG*); 00299 VOID IMAGEAPI RemoveRelocations(PCHAR); 00300 DWORD IMAGEAPI SymSetOptions(IN DWORD); 00301 DWORD IMAGEAPI SymGetOptions(VOID); 00302 BOOL IMAGEAPI SymCleanup(IN HANDLE); 00303 BOOL IMAGEAPI SymEnumerateModules(IN HANDLE,IN PSYM_ENUMMODULES_CALLBACK,IN PVOID); 00304 BOOL IMAGEAPI SymEnumerateSymbols(IN HANDLE,IN DWORD,IN PSYM_ENUMSYMBOLS_CALLBACK,IN PVOID); 00305 BOOL IMAGEAPI EnumerateLoadedModules(IN HANDLE,IN PENUMLOADED_MODULES_CALLBACK,IN PVOID); 00306 LPVOID IMAGEAPI SymFunctionTableAccess(HANDLE,DWORD); 00307 BOOL IMAGEAPI SymGetModuleInfo(IN HANDLE,IN DWORD,OUT PIMAGEHLP_MODULE); 00308 DWORD IMAGEAPI SymGetModuleBase(IN HANDLE,IN DWORD); 00309 BOOL IMAGEAPI SymGetSymFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_SYMBOL); 00310 BOOL IMAGEAPI SymGetSymFromName(IN HANDLE,IN LPSTR,OUT PIMAGEHLP_SYMBOL); 00311 BOOL IMAGEAPI SymGetSymNext(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL); 00312 BOOL IMAGEAPI SymGetSymPrev(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL); 00313 BOOL IMAGEAPI SymGetLineFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_LINE); 00314 BOOL IMAGEAPI SymGetLineFromName(IN HANDLE,IN LPSTR,IN LPSTR,IN DWORD,OUT PLONG,IN OUT PIMAGEHLP_LINE); 00315 BOOL IMAGEAPI SymGetLineNext(IN HANDLE,IN OUT PIMAGEHLP_LINE); 00316 BOOL IMAGEAPI SymGetLinePrev(IN HANDLE,IN OUT PIMAGEHLP_LINE); 00317 BOOL IMAGEAPI SymMatchFileName(IN LPSTR,IN LPSTR,OUT LPSTR*,OUT LPSTR*); 00318 BOOL IMAGEAPI SymInitialize(IN HANDLE,IN LPSTR,IN BOOL); 00319 BOOL IMAGEAPI SymGetSearchPath(IN HANDLE,OUT LPSTR,IN DWORD); 00320 BOOL IMAGEAPI SymSetSearchPath(IN HANDLE,IN LPSTR); 00321 DWORD IMAGEAPI SymLoadModule(IN HANDLE,IN HANDLE,IN PSTR,IN PSTR,IN DWORD,IN DWORD); 00322 BOOL IMAGEAPI SymUnloadModule(IN HANDLE,IN DWORD); 00323 BOOL IMAGEAPI SymUnDName(IN PIMAGEHLP_SYMBOL,OUT LPSTR,IN DWORD); 00324 BOOL IMAGEAPI SymRegisterCallback(IN HANDLE,IN PSYMBOL_REGISTERED_CALLBACK,IN PVOID); 00325 BOOL IMAGEAPI ImageGetDigestStream(IN HANDLE,IN DWORD,IN DIGEST_FUNCTION,IN DIGEST_HANDLE); 00326 BOOL IMAGEAPI ImageAddCertificate(IN HANDLE,IN LPWIN_CERTIFICATE,OUT PDWORD); 00327 BOOL IMAGEAPI ImageRemoveCertificate(IN HANDLE,IN DWORD); 00328 BOOL IMAGEAPI ImageEnumerateCertificates(IN HANDLE,IN WORD,OUT PDWORD,IN OUT PDWORD OPTIONAL,IN OUT DWORD OPTIONAL); 00329 BOOL IMAGEAPI ImageGetCertificateData(IN HANDLE,IN DWORD,OUT LPWIN_CERTIFICATE,IN OUT PDWORD); 00330 BOOL IMAGEAPI ImageGetCertificateHeader(IN HANDLE,IN DWORD,IN OUT LPWIN_CERTIFICATE); 00331 BOOL IMAGEAPI CopyPdb(CHAR const*,CHAR const*,BOOL); 00332 BOOL IMAGEAPI RemovePrivateCvSymbolicEx(PCHAR,ULONG,PCHAR*,ULONG*); 00333 00334 #endif /* RC_INVOKED */ 00335 00336 #ifdef UNICODE 00337 #define MapFileAndCheckSum MapFileAndCheckSumW 00338 #else 00339 #define MapFileAndCheckSum MapFileAndCheckSumA 00340 #endif 00341 00342 #ifdef __cplusplus 00343 } 00344 #endif 00345 00346 #endif /* _IMAGEHLP_H */ 00347 Generated on Sat May 26 2012 04:30:12 for ReactOS by
1.7.6.1
|