source: trunk/tools/common/kFilePE.h@ 10367

Last change on this file since 10367 was 8003, checked in by bird, 24 years ago

New kFile* classes; now in sync with os2tools.

File size: 3.3 KB
Line 
1/* $Id: kFilePE.h,v 1.5 2002-02-24 02:47:27 bird Exp $
2 *
3 * kFilePE - PE files.
4 *
5 * Copyright (c) 1999-2001 knut st. osmundsen
6 *
7 */
8
9#ifndef _kFilePE_h_
10#define _kFilePE_h_
11
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 *
28#endif
29
30
31/**
32 * PE (portable executable) files.
33 * @author knut st. osmundsen
34 */
35class kFilePE : public kFileFormatBase, public kExecutableI
36{
37 private:
38 void * pvBase; /* The file mapping. */
39
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;
46
47 /** @cat
48 * Directory pointers.
49 */
50 PIMAGE_EXPORT_DIRECTORY pExportDir; /* 0 */
51 PIMAGE_IMPORT_DESCRIPTOR pImportDir; /* 1 */
52 PIMAGE_RESOURCE_DIRECTORY pRsrcDir; /* 2 */
53 void * pExcpDir; /* 3 */
54 void * pSecDir; /* 4 */
55 PIMAGE_BASE_RELOCATION pBRelocDir; /* 5 */
56 PIMAGE_DEBUG_DIRECTORY pDebugDir; /* 6 */
57 char * pCopyright; /* 7 */
58 unsigned long * pulGlobalPtr; /* 8 */ //is this the correct pointer type?
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 */
64 void * pComDir; /* 14 */
65 void * pv15; /* 15 */
66
67 public:
68 kFilePE(kFile *pFile) throw (kError);
69 virtual ~kFilePE();
70
71 /** @cat Module information methods. */
72 KBOOL moduleGetName(char *pszBuffer, int cchSize = 260);
73
74 /** @cat Export enumeration methods. */
75 KBOOL exportFindFirst(kExportEntry *pExport);
76 KBOOL exportFindNext(kExportEntry *pExport);
77 void exportFindClose(kExportEntry *pExport);
78
79 /** @cat Export Lookup methods */
80 KBOOL exportLookup(unsigned long ulOrdinal, kExportEntry *pExport);
81 KBOOL exportLookup(const char * pszName, kExportEntry *pExport);
82
83 KBOOL isPe() const { return TRUE;}
84
85 KBOOL dump(kFile *pOut);
86};
87
88#endif
Note: See TracBrowser for help on using the repository browser.