source: trunk/src/kernel32/winimagepe2lx.h@ 4080

Last change on this file since 4080 was 4047, checked in by bird, 25 years ago

Tempfix which makes the resource section writeable and commits the 64KB
preceding the resource section commited and readable.

File size: 2.2 KB
Line 
1/* $Id: winimagepe2lx.h,v 1.2 2000-08-19 17:22:52 bird Exp $ */
2
3/*
4 * Win32 PE2LX Image base class
5 *
6 * Copyright 1999 Sander van Leeuwen (sandervl@xs4all.nl)
7 * Copyright 1999 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12#ifndef __WINIMAGEPE2LX_H__
13#define __WINIMAGEPE2LX_H__
14
15#include <winimagebase.h>
16
17
18/**
19 * Section struct - used to translate RVAs to pointers.
20 */
21typedef struct _Section
22{
23 ULONG ulRVA; /* RVA of section. If not a PE section ~0UL. */
24 ULONG cbVirtual; /* Virtual size (the larger of the physical and virtual) of the section. */
25 ULONG ulAddress; /* Current load address of the section. */
26} SECTION, *PSECTION;
27
28
29
30/**
31 * Base class for Pe2lx (and Win32k) dlls. There is currently no difference between
32 * Pe2Lx and Win32k images, though the image on disk is different...
33 * @shortdesc Pe2Lx and Win32k base image class.
34 * @author knut st. osmundsen, Sander van Leeuwen
35 * @approval -
36 */
37class Win32Pe2LxImage : public virtual Win32ImageBase
38{
39public:
40 /** @cat constructor and destructor */
41 Win32Pe2LxImage(HINSTANCE hinstance, BOOL fWin32k);
42 virtual ~Win32Pe2LxImage();
43 virtual BOOL init();
44
45 /** @cat Exports */
46 virtual ULONG getApi(char *name);
47 virtual ULONG getApi(int ordinal);
48
49private:
50 /** @cat constructor helpers */
51 ULONG getSections();
52 ULONG setSectionRVAs();
53 VOID cleanup();
54
55protected:
56 /** @cat RVA -> pointer */
57 /* this should be moved to winimagebase some day... */
58 PVOID getPointerFromRVA(ULONG ulRVA);
59 LONG getSectionIndexFromRVA(ULONG ulRVA);
60
61 PSECTION paSections; /* Used by getPointerFromRVA and created by getSections and
62 * setSectionRVAs. */
63 WORD cSections; /* Count of entires in the section array (paSection) */
64
65 /** @cat Misc */
66 PIMAGE_NT_HEADERS pNtHdrs; /* Pointer to NT headers. */
67 BOOL fWin32k; /* flag which indicates wether this is a Win32k loaded
68 * module (TRUE) or and Pe2Lx module (FALSE). */
69};
70
71
72#endif //__WINIMAGEPE2LX_H__
73
Note: See TracBrowser for help on using the repository browser.