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

Last change on this file since 9752 was 9537, checked in by sandervl, 23 years ago

Don't display message boxes for module load errors. Pass errors back to the PE loader.

File size: 2.6 KB
Line 
1/* $Id: winimagepe2lx.h,v 1.9 2002-12-20 11:39:42 sandervl 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 DWORD 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.