Subversion Repositories Kolibri OS

Rev

Rev 908 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
892 serge 1
 
2
typedef unsigned int DWORD;
3
typedef unsigned int LONG;
4
typedef unsigned char BYTE;
5
6
 
7
#define IMAGE_NT_SIGNATURE   0x00004550
8
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
9
10
 
11
typedef struct _IMAGE_DOS_HEADER
12
{
13
    WORD    e_magic;
14
    WORD    e_cblp;
15
    WORD    e_cp;
16
    WORD    e_crlc;
17
    WORD    e_cparhdr;
18
    WORD    e_minalloc;
19
    WORD    e_maxalloc;
20
    WORD    e_ss;
21
    WORD    e_sp;
22
    WORD    e_csum;
23
    WORD    e_ip;
24
    WORD    e_cs;
25
    WORD    e_lfarlc;
26
    WORD    e_ovno;
27
    WORD    e_res[4];
28
    WORD    e_oemid;
29
    WORD    e_oeminfo;
30
    WORD    e_res2[10];
31
    LONG    e_lfanew;
32
} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
33
#pragma pack(pop)
34
35
 
36
 
37
typedef struct _IMAGE_FILE_HEADER
38
{
39
    WORD    Machine;
40
    WORD    NumberOfSections;
41
    DWORD   TimeDateStamp;
42
    DWORD   PointerToSymbolTable;
43
    DWORD   NumberOfSymbols;
44
    WORD    SizeOfOptionalHeader;
45
    WORD    Characteristics;
46
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
47
48
 
49
    DWORD   VirtualAddress;
50
    DWORD   Size;
51
} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
52
53
 
54
55
 
56
    WORD    Magic;
57
    BYTE    MajorLinkerVersion;
58
    BYTE    MinorLinkerVersion;
59
    DWORD   SizeOfCode;
60
    DWORD   SizeOfInitializedData;
61
    DWORD   SizeOfUninitializedData;
62
    DWORD   AddressOfEntryPoint;
63
    DWORD   BaseOfCode;
64
    DWORD   BaseOfData;
65
    DWORD   ImageBase;
66
    DWORD   SectionAlignment;
67
    DWORD   FileAlignment;
68
    WORD    MajorOperatingSystemVersion;
69
    WORD    MinorOperatingSystemVersion;
70
    WORD    MajorImageVersion;
71
    WORD    MinorImageVersion;
72
    WORD    MajorSubsystemVersion;
73
    WORD    MinorSubsystemVersion;
74
    DWORD   Win32VersionValue;
75
    DWORD   SizeOfImage;
76
    DWORD   SizeOfHeaders;
77
    DWORD   CheckSum;
78
    WORD    Subsystem;
79
    WORD    DllCharacteristics;
80
    DWORD   SizeOfStackReserve;
81
    DWORD   SizeOfStackCommit;
82
    DWORD   SizeOfHeapReserve;
83
    DWORD   SizeOfHeapCommit;
84
    DWORD   LoaderFlags;
85
    DWORD   NumberOfRvaAndSizes;
86
	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
87
} IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;
88
89
 
90
91
 
92
 
93
typedef struct _IMAGE_NT_HEADERS
94
{
95
    DWORD Signature;
96
	IMAGE_FILE_HEADER FileHeader;
97
	IMAGE_OPTIONAL_HEADER OptionalHeader;
98
} IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32;
99
100
 
101
102
 
103
{
104
	BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
105
    union
106
    {
107
        DWORD PhysicalAddress;
108
		DWORD VirtualSize;
109
	} Misc;
110
    DWORD   VirtualAddress;
111
    DWORD   SizeOfRawData;
112
    DWORD   PointerToRawData;
113
    DWORD   PointerToRelocations;
114
    DWORD   PointerToLinenumbers;
115
    WORD    NumberOfRelocations;
116
    WORD    NumberOfLinenumbers;
117
    DWORD   Characteristics;
118
} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
119
#pragma pack(pop)
120
121
 
122
typedef struct _IMAGE_BASE_RELOCATION {
123
	DWORD VirtualAddress;
124
	DWORD SizeOfBlock;
125
} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
126
#pragma pack(pop)
127
128
 
129
{
130
    union
131
    {
132
		DWORD Characteristics;
133
		DWORD OriginalFirstThunk;
134
    };
135
    DWORD   TimeDateStamp;
136
    DWORD   ForwarderChain;
137
    DWORD   Name;
138
    DWORD   FirstThunk;
139
} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
140
141
 
142
{
143
    union
144
    {
145
		DWORD ForwarderString;
146
		DWORD Function;
147
		DWORD Ordinal;
148
		DWORD AddressOfData;
149
	} u1;
150
} IMAGE_THUNK_DATA32,*PIMAGE_THUNK_DATA32;
151
152
 
153
{
154
	WORD Hint;
155
	BYTE Name[1];
156
} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
157
158
 
159
160
 
161
	DWORD Characteristics;
162
	DWORD TimeDateStamp;
163
	WORD MajorVersion;
164
	WORD MinorVersion;
165
	DWORD Name;
166
	DWORD Base;
167
	DWORD NumberOfFunctions;
168
	DWORD NumberOfNames;
169
	DWORD AddressOfFunctions;
170
	DWORD AddressOfNames;
171
	DWORD AddressOfNameOrdinals;
172
} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
173
174
 
175
 
176
{
177
    link_t  link;
178
179
 
180
    size_t  img_size;
181
    char   *img_name;
182
    md_t   *img_md;
183
184
 
185
    PIMAGE_SECTION_HEADER    img_sec;
186
    PIMAGE_EXPORT_DIRECTORY  img_exp;
187
    u32_t   img_map[8];                  /* mapped treads */
188
}dll_t;
189
190
 
191
 
192
193
 
194
 
195
196
 
197
 
198
199
 
200