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

Last change on this file since 3485 was 3074, checked in by sandervl, 25 years ago

file handle + registry changes

File size: 2.1 KB
Line 
1/* $Id: winimagepe2lx.h,v 1.1 2000-03-10 16:12:03 sandervl 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
60 PSECTION paSections; /* Used by getPointerFromRVA and created by getSections and
61 * setSectionRVAs. */
62 WORD cSections; /* Count of entires in the section array (paSection) */
63
64 /** @cat Misc */
65 PIMAGE_NT_HEADERS pNtHdrs; /* Pointer to NT headers. */
66 BOOL fWin32k; /* flag which indicates wether this is a Win32k loaded
67 * module (TRUE) or and Pe2Lx module (FALSE). */
68};
69
70
71#endif //__WINIMAGEPE2LX_H__
72
Note: See TracBrowser for help on using the repository browser.