ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

imagehlp.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.