source: trunk/tools/common/kFilePE.h

Last change on this file was 21916, checked in by dmik, 14 years ago

Merge branch gcc-kmk to trunk.

File size: 3.3 KB
RevLine 
[8003]1/* $Id: kFilePE.h,v 1.5 2002-02-24 02:47:27 bird Exp $
2 *
[824]3 * kFilePE - PE files.
4 *
[5531]5 * Copyright (c) 1999-2001 knut st. osmundsen
[824]6 *
7 */
8
9#ifndef _kFilePE_h_
[4358]10#define _kFilePE_h_
[824]11
[8003]12#ifndef _peexe_h_
13#define PIMAGE_DOS_HEADER void *
14#define PIMAGE_FILE_HEADER void *
15#define PIMAGE_OPTIONAL_HEADER void *
16#define PIMAGE_DATA_DIRECTORY void *
17#define PIMAGE_SECTION_HEADER void *
18#define PIMAGE_EXPORT_DIRECTORY void *
19#define PIMAGE_IMPORT_DESCRIPTOR void *
20#define PIMAGE_RESOURCE_DIRECTORY void *
21#define PIMAGE_BASE_RELOCATION void *
22#define PIMAGE_DEBUG_DIRECTORY void *
23#define PIMAGE_TLS_DIRECTORY void *
24#define PIMAGE_LOAD_CONFIG_DIRECTORY void *
25#define PIMAGE_IMPORT_DESCRIPTOR void *
26#define PIMAGE_THUNK_DATA void *
27#define PIMAGE_IMPORT_DESCRIPTOR void *
[824]28#endif
29
30
31/**
32 * PE (portable executable) files.
33 * @author knut st. osmundsen
34 */
[5531]35class kFilePE : public kFileFormatBase, public kExecutableI
[824]36{
37 private:
[8003]38 void * pvBase; /* The file mapping. */
[824]39
[8003]40 /* headers - pointers within the filemapping. */
41 PIMAGE_DOS_HEADER pDosHdr;
42 PIMAGE_FILE_HEADER pFileHdr;
43 PIMAGE_OPTIONAL_HEADER pOptHdr;
44 PIMAGE_DATA_DIRECTORY paDataDir;
45 PIMAGE_SECTION_HEADER paSectionHdr;
[824]46
[4358]47 /** @cat
48 * Directory pointers.
49 */
50 PIMAGE_EXPORT_DIRECTORY pExportDir; /* 0 */
51 PIMAGE_IMPORT_DESCRIPTOR pImportDir; /* 1 */
52 PIMAGE_RESOURCE_DIRECTORY pRsrcDir; /* 2 */
[8003]53 void * pExcpDir; /* 3 */
54 void * pSecDir; /* 4 */
[4358]55 PIMAGE_BASE_RELOCATION pBRelocDir; /* 5 */
56 PIMAGE_DEBUG_DIRECTORY pDebugDir; /* 6 */
[8003]57 char * pCopyright; /* 7 */
58 unsigned long * pulGlobalPtr; /* 8 */ //is this the correct pointer type?
[4358]59 PIMAGE_TLS_DIRECTORY pTLSDir; /* 9 */
60 PIMAGE_LOAD_CONFIG_DIRECTORY pLoadConfigDir; /* 10 */
61 PIMAGE_IMPORT_DESCRIPTOR pBoundImportDir;/* 11 */ //is this the correct pointer type?
62 PIMAGE_THUNK_DATA pIATDir; /* 12 */ //is this the correct pointer type?
63 PIMAGE_IMPORT_DESCRIPTOR pDelayImportDir;/* 13 */
[8003]64 void * pComDir; /* 14 */
65 void * pv15; /* 15 */
[824]66
67 public:
[8003]68 kFilePE(kFile *pFile) throw (kError);
[21916]69 virtual ~kFilePE() throw (kError);
[824]70
[5531]71 /** @cat Module information methods. */
[8003]72 KBOOL moduleGetName(char *pszBuffer, int cchSize = 260);
[5531]73
74 /** @cat Export enumeration methods. */
[8003]75 KBOOL exportFindFirst(kExportEntry *pExport);
76 KBOOL exportFindNext(kExportEntry *pExport);
[5531]77 void exportFindClose(kExportEntry *pExport);
78
79 /** @cat Export Lookup methods */
[8003]80 KBOOL exportLookup(unsigned long ulOrdinal, kExportEntry *pExport);
81 KBOOL exportLookup(const char * pszName, kExportEntry *pExport);
[5531]82
[8003]83 KBOOL isPe() const { return TRUE;}
[4358]84
[8003]85 KBOOL dump(kFile *pOut);
[824]86};
87
88#endif
Note: See TracBrowser for help on using the repository browser.