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

Last change on this file since 7029 was 6302, checked in by bird, 24 years ago

Added fDll flag so we could tell when to call DosFreeModule.

File size: 2.6 KB
Line 
1/* $Id: winimagepe2lx.h,v 1.8 2001-07-10 20:18:49 bird Exp $ */
2
3/*
4 * Win32 PE2LX Image base class
5 *
6 * Copyright 1999 Sander van Leeuwen (sandervl@xs4all.nl)
7 * Copyright 1999-2000 knut st. osmundsen (knut.stange.osmundsen@mynd.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
49 /** @cat Queries */
50 /** Get the OS/2 module handle.
51 * @returns OS/2 module handle. */
52 HINSTANCE getHMOD() const { return hmod; }
53
54private:
55 /** @cat constructor helpers */
56 ULONG getSections();
57 ULONG setSectionRVAs();
58 VOID cleanup();
59
60protected:
61 /** @cat RVA -> pointer */
62 /* these should be moved to winimagebase some day... */
63 PVOID getPointerFromRVA(ULONG ulRVA);
64 PVOID getPointerFromPointer(PVOID pv);
65 LONG getSectionIndexFromRVA(ULONG ulRVA);
66 BOOL validateRealPointer(PVOID pv);
67
68 PSECTION paSections; /* Used by getPointerFromRVA and created by getSections and
69 * setSectionRVAs. */
70 WORD cSections; /* Count of entires in the section array (paSection) */
71
72 /** @cat Misc */
73 PIMAGE_NT_HEADERS pNtHdrs; /* Pointer to NT headers. */
74 BOOL fWin32k; /* flag which indicates wether this is a Win32k loaded
75 * module (TRUE) or and Pe2Lx module (FALSE). */
76 HMODULE hmod; /* OS/2 handle of the module. */
77 BOOL fDll; /* Set by Win32Pe2LxDll. */
78};
79
80
81#endif //__WINIMAGEPE2LX_H__
82
Note: See TracBrowser for help on using the repository browser.