/* * Title * * exe386.h * (C) Copyright Microsoft Corp 1988-1990 * * Description * * Data structure definitions for the OS/2 * executable file format (flat model). * * Modification History * * 91/12/18 Wieslaw Kalkus Windows NT version * 90/07/30 Wieslaw Kalkus Modified linear-executable * 88/08/05 Wieslaw Kalkus Initial version */ /*_________________________________________________________________* | | | | | OS/2 .EXE FILE HEADER DEFINITION - 386 version 0:32 | | | |_________________________________________________________________| * */ #define BITPERBYTE 8 /* Should never change */ #define BITPERWORD 16 /* I'm not sure about this one */ #define OBJPAGELEN 4096 /* Memory page size in bytes */ #define E32RESBYTES1 8 /* First bytes reserved */ #define E32RESBYTES2 2 /* Second bytes reserved */ #define E32RESBYTES3 12 /* Third bytes reserved */ #define E32RESBYTES4 8 /* Fourth bytes reserved */ #define E32RESBYTES5 4 /* Fifth bytes reserved */ #define E32RESBYTES6 4 /* Sixth bytes reserved */ #define STD_EXTRA 9 /* Standard number of extra information*/ /* units placed in the header; this */ /* includes the following tables: */ /* - export, import, resource, */ /* exception, security, fixup, */ /* debug, image description, */ /* machine specific tables */ #define EXP 0 /* Export table position */ #define IMP 1 /* Import table position */ #define RES 2 /* Resource table position */ #define EXC 3 /* Exception table position */ #define SEC 4 /* Security table position */ #define FIX 5 /* Fixup table position */ #define DEB 6 /* Debug table position */ #define IMD 7 /* Image description table position */ #define MSP 8 /* Machine specific table position */ struct info /* Extra information header block */ { unsigned long rva; /* Virtual relative address of info */ unsigned long size; /* Size of information block */ }; struct e32_exe /* PE 32-bit .EXE header */ { unsigned char e32_magic[4]; /* Magic number E32_MAGIC */ unsigned short e32_cpu; /* The CPU type */ unsigned short e32_objcnt; /* Number of memory objects */ unsigned long e32_timestamp; /* Time EXE file was created/modified */ unsigned char e32_res1[E32RESBYTES1]; /* Reserved bytes - must be 0 */ unsigned short e32_opthdrsize; /* Optional header size */ unsigned short e32_imageflags; /* Image flags */ unsigned char e32_res2[E32RESBYTES2]; /* Reserved bytes - must be 0 */ unsigned char e32_linkmajor; /* The linker major version number */ unsigned char e32_linkminor; /* The linker minor version number */ unsigned char e32_res3[E32RESBYTES3]; /* Reserved bytes - must be 0 */ unsigned long e32_entryrva; /* Relative virt. addr. of entry point */ unsigned char e32_res4[E32RESBYTES4]; /* Reserved bytes - must be 0 */ unsigned long e32_vbase; /* Virtual base address of module */ unsigned long e32_objalign; /* Object Virtual Address align. factor*/ unsigned long e32_filealign; /* Image page alignment/truncate factor*/ unsigned short e32_osmajor; /* The operating system major ver. no. */ unsigned short e32_osminor; /* The operating system minor ver. no. */ unsigned short e32_usermajor; /* The user major version number */ unsigned short e32_userminor; /* The user minor version number */ unsigned short e32_subsysmajor;/* The subsystem major version number */ unsigned short e32_subsysminor;/* The subsystem minor version number */ unsigned char e32_res5[E32RESBYTES5]; /* Reserved bytes - must be 0 */ unsigned long e32_vsize; /* Virtual size of the entire image */ unsigned long e32_hdrsize; /* Header information size */ unsigned long e32_filechksum; /* Checksum for entire file */ unsigned short e32_subsys; /* The subsystem type */ unsigned short e32_dllflags; /* DLL flags */ unsigned long e32_stackmax; /* Maximum stack size */ unsigned long e32_stackinit; /* Initial committed stack size */ unsigned long e32_heapmax; /* Maximum heap size */ unsigned long e32_heapinit; /* Initial committed heap size */ unsigned char e32_res6[E32RESBYTES6]; /* Reserved bytes - must be 0 */ unsigned long e32_hdrextra; /* Number of extra info units in header*/ struct info e32_unit[STD_EXTRA]; /* Array of extra info units */ }; #define E32HDR_SIZE sizeof(struct e32_exe) #define E32_MAGIC(x) ((unsigned short)((x).e32_magic[0]<