source: trunk/include/winimagepe2lx.h@ 1274

Last change on this file since 1274 was 1274, checked in by bird, 26 years ago

New Pe2Lx implementation.

File size: 2.0 KB
Line 
1/* $Id: winimagepe2lx.h,v 1.2 1999-10-14 01:39:13 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) throw(ULONG);
42 virtual ~Win32Pe2LxImage();
43
44private:
45 /** @cat constructor helpers */
46 ULONG getSections();
47 ULONG setSectionRVAs();
48 VOID cleanup();
49
50protected:
51 /** @cat RVA -> pointer */
52 /* this should be moved to winimagebase some day... */
53 PVOID getPointerFromRVA(ULONG ulRVA);
54
55 PSECTION paSections; /* Used by getPointerFromRVA and created by getSections and
56 * setSectionRVAs. */
57 WORD cSections; /* Count of entires in the section array (paSection) */
58
59 /** @cat Misc */
60 PIMAGE_NT_HEADERS pNtHdrs; /* Pointer to NT headers. */
61 BOOL fWin32k; /* flag which indicates wether this is a Win32k loaded
62 * module (TRUE) or and Pe2Lx module (FALSE). */
63};
64
65
66#endif //__WINIMAGEPE2LX_H__
67
Note: See TracBrowser for help on using the repository browser.