home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / include / imagehlp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-09-16  |  9.7 KB  |  250 lines

  1. #ifndef    _LCC_IMGEHLP_
  2. #pragma pack(push,1)
  3. #define    _LCC_IMGEHLP_
  4. #define    CHECKSUM_SUCCESS    0
  5. #define    CHECKSUM_OPEN_FAILURE    1
  6. #define    CHECKSUM_MAP_FAILURE    2
  7. #define    CHECKSUM_MAPVIEW_FAILURE    3
  8. #define    CHECKSUM_UNICODE_FAILURE    4
  9. #define    SPLITSYM_REMOVE_PRIVATE    1
  10. #define    SPLITSYM_EXTRACT_ALL    2
  11. #define    IMAGEAPI    __stdcall
  12. PIMAGE_NT_HEADERS IMAGEAPI CheckSumMappedFile(LPVOID,DWORD,LPDWORD,LPDWORD);
  13. DWORD    IMAGEAPI    MapFileAndCheckSumA(LPSTR,LPDWORD,LPDWORD);
  14. DWORD    IMAGEAPI    MapFileAndCheckSumW(LPWSTR,LPDWORD,LPDWORD);
  15. #ifdef    UNICODE
  16. #define    MapFileAndCheckSum    MapFileAndCheckSumW
  17. #else
  18. #define    MapFileAndCheckSum    MapFileAndCheckSumA
  19. #endif    //    !UNICODE
  20. BOOL    IMAGEAPI    TouchFileTimes(HANDLE,LPSYSTEMTIME);
  21. BOOL    IMAGEAPI    SplitSymbols(LPSTR,LPSTR,LPSTR,DWORD);
  22. HANDLE    IMAGEAPI    FindDebugInfoFile(LPSTR,LPSTR,LPSTR);
  23. HANDLE    IMAGEAPI    FindExecutableImage(LPSTR,LPSTR,LPSTR);
  24. BOOL    IMAGEAPI    UpdateDebugInfoFile(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS);
  25. BOOL    IMAGEAPI    UpdateDebugInfoFileEx(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS,DWORD);
  26. BOOL    IMAGEAPI    BindImage(LPSTR,LPSTR,LPSTR);
  27. typedef    enum    _STATUS {
  28.     BindOutOfMemory, BindRvaToVaFailed, BindNoRoomInImage, BindImportModuleFailed,
  29.     BindImportProcedureFailed, BindImportModule, BindImportProcedure,
  30.     BindForwarder,    BindForwarderNOT, BindImageModified,
  31.     BindExpandFileHeaders,    BindImageComplete, BindMismatchedSymbols,
  32.     BindSymbolsNotUpdated    } IMAGEHLP_STATUS_REASON;
  33. typedef    BOOL    (_stdcall *PIMAGEHLP_STATUS_ROUTINE)(IMAGEHLP_STATUS_REASON,
  34.     LPSTR,LPSTR,ULONG,ULONG);
  35. BOOL    IMAGEAPI BindImageEx(DWORD,LPSTR,LPSTR,LPSTR,PIMAGEHLP_STATUS_ROUTINE);
  36. #define    BIND_NO_BOUND_IMPORTS    1
  37. #define    BIND_NO_UPDATE    2
  38. #define    BIND_ALL_IMAGES    4
  39. BOOL    IMAGEAPI ReBaseImage(LPSTR,LPSTR,BOOL,BOOL,BOOL,ULONG,ULONG *,ULONG *,
  40.     ULONG    *,ULONG *,ULONG);
  41. #define    IMAGE_SEPARATION    (64*1024)
  42. typedef    struct    _LoadedImage {
  43.     LPSTR    ModuleName;
  44.     HANDLE    hFile;
  45.     PUCHAR    MappedAddress;
  46.     PIMAGE_NT_HEADERS    FileHeader;
  47.     PIMAGE_SECTION_HEADER    LastRvaSection;
  48.     ULONG    NumberOfSections;
  49.     PIMAGE_SECTION_HEADER    Sections;
  50.     ULONG    Characteristics;
  51.     BOOLEAN    fSystemImage;
  52.     BOOLEAN    fDOSImage;
  53.     LIST_ENTRY    Links;
  54.     ULONG    SizeOfImage;
  55. }    LOADED_IMAGE,    *PLOADED_IMAGE;
  56. PLOADED_IMAGE    IMAGEAPI    ImageLoad(LPSTR,LPSTR);
  57. BOOL    ImageUnload(PLOADED_IMAGE);
  58. PIMAGE_NT_HEADERS    IMAGEAPI    ImageNtHeader(PVOID);
  59. PVOID    IMAGEAPI    ImageDirectoryEntryToData(PVOID,BOOLEAN,USHORT,PULONG);
  60. PIMAGE_SECTION_HEADER    IMAGEAPI    ImageRvaToSection(PIMAGE_NT_HEADERS,PVOID,ULONG);
  61. PVOID    IMAGEAPI    ImageRvaToVa(PIMAGE_NT_HEADERS,PVOID,ULONG,PIMAGE_SECTION_HEADER *);
  62. BOOL    IMAGEAPI    MapAndLoad(LPSTR,LPSTR,PLOADED_IMAGE,BOOL,BOOL);
  63. BOOL    IMAGEAPI    GetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY);
  64. DWORD    IMAGEAPI    GetImageUnusedHeaderBytes(PLOADED_IMAGE,LPDWORD);
  65. BOOL    IMAGEAPI    SetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY);
  66. VOID    IMAGEAPI    UnMapAndLoad(PLOADED_IMAGE);
  67. typedef    struct    _dbg {
  68.     LIST_ENTRY    List;
  69.     DWORD    Size;
  70.     PVOID    MappedBase;
  71.     USHORT    Machine;
  72.     USHORT    Characteristics;
  73.     DWORD    CheckSum;
  74.     DWORD    ImageBase;
  75.     DWORD    SizeOfImage;
  76.     DWORD    NumberOfSections;
  77.     PIMAGE_SECTION_HEADER    Sections;
  78.     DWORD    ExportedNamesSize;
  79.     LPSTR    ExportedNames;
  80.     DWORD    NumberOfFunctionTableEntries;
  81.     PIMAGE_FUNCTION_ENTRY    FunctionTableEntries;
  82.     DWORD    LowestFunctionStartingAddress;
  83.     DWORD    HighestFunctionEndingAddress;
  84.     DWORD    NumberOfFpoTableEntries;
  85.     PFPO_DATA    FpoTableEntries;
  86.     DWORD    SizeOfCoffSymbols;
  87.     PIMAGE_COFF_SYMBOLS_HEADER    CoffSymbols;
  88.     DWORD    SizeOfCodeViewSymbols;
  89.     PVOID    CodeViewSymbols;
  90.     LPSTR    ImageFilePath;
  91.     LPSTR    ImageFileName;
  92.     LPSTR    DebugFilePath;
  93.     DWORD    TimeDateStamp;
  94.     BOOL    RomImage;
  95.     PIMAGE_DEBUG_DIRECTORY    DebugDirectory;
  96.     DWORD    NumberOfDebugDirectories;
  97.     DWORD    Reserved[ 3 ];
  98. }    IMAGE_DEBUG_INFORMATION,    *PIMAGE_DEBUG_INFORMATION;
  99. PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE,LPSTR,LPSTR,DWORD);
  100. BOOL    IMAGEAPI    UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
  101. HANDLE    IMAGEAPI    FindExecutableImage(LPSTR,LPSTR,LPSTR);
  102. BOOL    IMAGEAPI    SearchTreeForFile(LPSTR,LPSTR,LPSTR);
  103. BOOL    IMAGEAPI    MakeSureDirectoryPathExists(LPSTR);
  104. #define    UNDNAME_COMPLETE    0 
  105. #define    UNDNAME_NO_LEADING_UNDERSCORES    1
  106. #define    UNDNAME_NO_MS_KEYWORDS    2
  107. #define    UNDNAME_NO_FUNCTION_RETURNS    4
  108. #define    UNDNAME_NO_ALLOCATION_MODEL    8
  109. #define    UNDNAME_NO_ALLOCATION_LANGUAGE    16
  110. #define    UNDNAME_NO_MS_THISTYPE    32
  111. #define    UNDNAME_NO_CV_THISTYPE    64
  112. #define    UNDNAME_NO_THISTYPE    0x60
  113. #define    UNDNAME_NO_ACCESS_SPECIFIERS    0x80
  114. #define    UNDNAME_NO_THROW_SIGNATURES    0x100
  115. #define    UNDNAME_NO_MEMBER_TYPE    0x200
  116. #define    UNDNAME_NO_RETURN_UDT_MODEL    0x400
  117. #define    UNDNAME_32_BIT_DECODE    0x800
  118. #define    UNDNAME_NAME_ONLY    0x1000
  119. #define    UNDNAME_NO_ARGUMENTS    0x2000
  120. #define    UNDNAME_NO_SPECIAL_SYMS    0x4000
  121. DWORD    IMAGEAPI WINAPI UnDecorateSymbolName(LPSTR,LPSTR,DWORD,DWORD);
  122. typedef    enum    { AddrMode1616, AddrMode1632, AddrModeReal, AddrModeFlat } ADDRESS_MODE;
  123. typedef    struct    _ADDRESS {
  124.     DWORD    Offset;
  125.     WORD    Segment;
  126.     ADDRESS_MODE    Mode;
  127. }    ADDRESS,    *LPADDRESS;
  128. typedef    struct    _KD {
  129.     DWORD    Thread;
  130.     DWORD    ThCallbackStack;
  131.     DWORD    NextCallback;
  132.     DWORD    FramePointer;
  133.     DWORD    KiCallUserMode;
  134.     DWORD    KeUserCallbackDispatcher;
  135. }    KDHELP,    *PKDHELP;
  136. typedef    struct    _STACKFRAME {
  137.     ADDRESS    AddrPC;
  138.     ADDRESS    AddrReturn;
  139.     ADDRESS    AddrFrame;
  140.     ADDRESS    AddrStack;
  141.     LPVOID    FuncTableEntry;
  142.     DWORD    Params[4];
  143.     BOOL    Far;
  144.     BOOL    Virtual;
  145.     DWORD    Reserved[3];
  146.     KDHELP    KdHelp;
  147. }    STACKFRAME,    *LPSTACKFRAME;
  148. typedef    BOOL    (_stdcall *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE,LPCVOID,LPVOID,DWORD,LPDWORD);
  149. typedef    LPVOID    (_stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE,DWORD);
  150. typedef    DWORD    (_stdcall *PGET_MODULE_BASE_ROUTINE)(HANDLE,DWORD);
  151. typedef    DWORD    (_stdcall *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE,HANDLE,LPADDRESS);
  152. BOOL    IMAGEAPI StackWalk(DWORD,HANDLE,HANDLE,LPSTACKFRAME,LPVOID,PREAD_PROCESS_MEMORY_ROUTINE,
  153.     PFUNCTION_TABLE_ACCESS_ROUTINE,PGET_MODULE_BASE_ROUTINE,PTRANSLATE_ADDRESS_ROUTINE);
  154. #define    API_VERSION_NUMBER    4
  155. typedef    struct    _VERSION {
  156.     USHORT    MajorVersion;
  157.     USHORT    MinorVersion;
  158.     USHORT    Revision;
  159.     USHORT    Reserved;
  160. }    API_VERSION,    *LPAPI_VERSION;
  161. LPAPI_VERSION    ImagehlpApiVersion(VOID);
  162. LPAPI_VERSION    ImagehlpApiVersionEx(LPAPI_VERSION);
  163. DWORD    IMAGEAPI    GetTimestampForLoadedLibrary(HMODULE);
  164. BOOL    IMAGEAPI    RemovePrivateCvSymbolic(PCHAR,PCHAR *,ULONG *);
  165. VOID    IMAGEAPI    RemoveRelocations(PCHAR);
  166. typedef    BOOL    (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(LPSTR,ULONG,PVOID);
  167. typedef    BOOL    (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(LPSTR,ULONG,ULONG,PVOID);
  168. typedef    BOOL    (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(LPSTR,ULONG,ULONG,PVOID);
  169. typedef    BOOL    (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE,ULONG,PVOID,PVOID);
  170. #define    SYMF_OMAP_GENERATED    1
  171. #define    SYMF_OMAP_MODIFIED    2
  172. typedef    enum    { SymNone, SymCoff, SymCv, SymPdb, SymExport, SymDeferred,
  173.     SymSym    } SYM_TYPE;
  174. typedef    struct    _IMSYMBOL {
  175.     DWORD    SizeOfStruct;
  176.     DWORD    Address;
  177.     DWORD    Size;
  178.     DWORD    Flags;
  179.     DWORD    MaxNameLength;
  180.     CHAR    Name[1];
  181. }    IMAGEHLP_SYMBOL,    *PIMAGEHLP_SYMBOL;
  182. typedef    struct    _IMAGEHLP_MODULE {
  183.     DWORD    SizeOfStruct;
  184.     DWORD    BaseOfImage; 
  185.     DWORD    ImageSize; 
  186.     DWORD    TimeDateStamp; 
  187.     DWORD    CheckSum; 
  188.     DWORD    NumSyms;
  189.     SYM_TYPE    SymType;
  190.     CHAR    ModuleName[32]; 
  191.     CHAR    ImageName[256];
  192.     CHAR    LoadedImageName[256]; 
  193. }    IMAGEHLP_MODULE,    *PIMAGEHLP_MODULE;
  194. #define    CBA_DEFERRED_SYMBOL_LOAD_START    1
  195. #define    CBA_DEFERRED_SYMBOL_LOAD_COMPLETE    2
  196. #define    CBA_DEFERRED_SYMBOL_LOAD_FAILURE    3
  197. #define    CBA_SYMBOLS_UNLOADED    4
  198. #define    CBA_DUPLICATE_SYMBOL    5
  199. typedef    struct    _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
  200.     DWORD    SizeOfStruct;
  201.     DWORD    BaseOfImage;
  202.     DWORD    CheckSum; 
  203.     DWORD    TimeDateStamp; 
  204.     CHAR    FileName[MAX_PATH]; 
  205. }    IMAGEHLP_DEFERRED_SYMBOL_LOAD,    *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
  206. typedef    struct    _IMAGEHLP_DUPLICATE_SYMBOL {
  207.     DWORD    SizeOfStruct;
  208.     DWORD    NumberOfDups; 
  209.     PIMAGEHLP_SYMBOL    Symbol; 
  210.     ULONG    SelectedSymbol;
  211. }    IMAGEHLP_DUPLICATE_SYMBOL,    *PIMAGEHLP_DUPLICATE_SYMBOL;
  212. #define    SYMOPT_CASE_INSENSITIVE    1
  213. #define    SYMOPT_UNDNAME    2
  214. #define    SYMOPT_DEFERRED_LOADS    4
  215. #define    SYMOPT_NO_CPP    8
  216. DWORD    IMAGEAPI SymSetOptions(DWORD);
  217. DWORD    IMAGEAPI SymGetOptions(VOID);
  218. BOOL    IMAGEAPI SymCleanup(HANDLE);
  219. BOOL IMAGEAPI SymEnumerateModules(HANDLE,PSYM_ENUMMODULES_CALLBACK,PVOID);
  220. BOOL IMAGEAPI SymEnumerateSymbols(HANDLE,DWORD,PSYM_ENUMSYMBOLS_CALLBACK,PVOID);
  221. BOOL IMAGEAPI EnumerateLoadedModules(HANDLE,PENUMLOADED_MODULES_CALLBACK,PVOID);
  222. LPVOID    IMAGEAPI SymFunctionTableAccess(HANDLE,DWORD);
  223. BOOL    IMAGEAPI SymGetModuleInfo(HANDLE,DWORD,PIMAGEHLP_MODULE);
  224. DWORD    IMAGEAPI SymGetModuleBase(HANDLE,DWORD);
  225. BOOL    IMAGEAPI SymGetSymFromAddr(HANDLE,DWORD,PDWORD,PIMAGEHLP_SYMBOL);
  226. BOOL    IMAGEAPI SymGetSymFromName(HANDLE,LPSTR,PIMAGEHLP_SYMBOL);
  227. BOOL    IMAGEAPI SymGetSymNext(HANDLE,PIMAGEHLP_SYMBOL);
  228. BOOL    IMAGEAPI SymGetSymPrev(HANDLE,PIMAGEHLP_SYMBOL);
  229. BOOL    IMAGEAPI SymInitialize(HANDLE,LPSTR,BOOL);
  230. BOOL    IMAGEAPI SymGetSearchPath(HANDLE,LPSTR,DWORD);
  231. BOOL    IMAGEAPI SymSetSearchPath(HANDLE,LPSTR);
  232. DWORD    IMAGEAPI SymLoadModule(HANDLE,HANDLE,PSTR,PSTR,DWORD,DWORD);
  233. BOOL    IMAGEAPI SymUnloadModule(HANDLE,DWORD);
  234. BOOL    IMAGEAPI SymUnDName(PIMAGEHLP_SYMBOL,LPSTR,DWORD);
  235. BOOL    IMAGEAPI SymRegisterCallback(HANDLE,PSYMBOL_REGISTERED_CALLBACK,PVOID);
  236. #define    CERT_PE_IMAGE_DIGEST_DEBUG_INFO    1
  237. #define    CERT_PE_IMAGE_DIGEST_RESOURCES    2
  238. #define    CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO    4
  239. #define    CERT_SECTION_TYPE_ANY    0xFF
  240. typedef    PVOID    DIGEST_HANDLE;
  241. typedef    BOOL    (WINAPI *DIGEST_FUNCTION)(DIGEST_HANDLE,PBYTE,DWORD);
  242. BOOL    IMAGEAPI    ImageGetDigestStream(HANDLE,DWORD,DIGEST_FUNCTION,DIGEST_HANDLE);
  243. BOOL    IMAGEAPI    ImageAddCertificate(HANDLE,LPWIN_CERTIFICATE,LPDWORD);
  244. BOOL    IMAGEAPI    ImageRemoveCertificate(HANDLE,DWORD);
  245. BOOL    IMAGEAPI    ImageEnumerateCertificates(HANDLE,WORD,LPDWORD,LPDWORD,...);
  246. BOOL    IMAGEAPI    ImageGetCertificateData(HANDLE,DWORD,LPWIN_CERTIFICATE,PDWORD);
  247. BOOL    IMAGEAPI    ImageGetCertificateHeader(HANDLE,DWORD,LPWIN_CERTIFICATE);
  248. #pragma pack(pop)
  249. #endif
  250.