Use the exported IMAGE_OS2_HEADER to generate the module header in the
spec file, and moved the NE_MODULE structure definition to
kernel16_private.h.
diff --git a/dlls/kernel/kernel16_private.h b/dlls/kernel/kernel16_private.h
index c2e50f7..475dda3 100644
--- a/dlls/kernel/kernel16_private.h
+++ b/dlls/kernel/kernel16_private.h
@@ -28,6 +28,49 @@
#include "pshpack1.h"
+/* In-memory module structure. See 'Windows Internals' p. 219 */
+typedef struct _NE_MODULE
+{
+ WORD magic; /* 00 'NE' signature */
+ WORD count; /* 02 Usage count */
+ WORD entry_table; /* 04 Near ptr to entry table */
+ HMODULE16 next; /* 06 Selector to next module */
+ WORD dgroup_entry; /* 08 Near ptr to segment entry for DGROUP */
+ WORD fileinfo; /* 0a Near ptr to file info (OFSTRUCT) */
+ WORD flags; /* 0c Module flags */
+ WORD dgroup; /* 0e Logical segment for DGROUP */
+ WORD heap_size; /* 10 Initial heap size */
+ WORD stack_size; /* 12 Initial stack size */
+ WORD ip; /* 14 Initial ip */
+ WORD cs; /* 16 Initial cs (logical segment) */
+ WORD sp; /* 18 Initial stack pointer */
+ WORD ss; /* 1a Initial ss (logical segment) */
+ WORD seg_count; /* 1c Number of segments in segment table */
+ WORD modref_count; /* 1e Number of module references */
+ WORD nrname_size; /* 20 Size of non-resident names table */
+ WORD seg_table; /* 22 Near ptr to segment table */
+ WORD res_table; /* 24 Near ptr to resource table */
+ WORD name_table; /* 26 Near ptr to resident names table */
+ WORD modref_table; /* 28 Near ptr to module reference table */
+ WORD import_table; /* 2a Near ptr to imported names table */
+ DWORD nrname_fpos; /* 2c File offset of non-resident names table */
+ WORD moveable_entries; /* 30 Number of moveable entries in entry table*/
+ WORD alignment; /* 32 Alignment shift count */
+ WORD truetype; /* 34 Set to 2 if TrueType font */
+ BYTE os_flags; /* 36 Operating system flags */
+ BYTE misc_flags; /* 37 Misc. flags */
+ HANDLE16 dlls_to_init; /* 38 List of DLLs to initialize */
+ HANDLE16 nrname_handle; /* 3a Handle to non-resident name table */
+ WORD min_swap_area; /* 3c Min. swap area size */
+ WORD expected_version; /* 3e Expected Windows version */
+ /* From here, these are extra fields not present in normal Windows */
+ HMODULE module32; /* 40 PE module handle for Win32 modules */
+ HMODULE16 self; /* 44 Handle for this module */
+ WORD self_loading_sel; /* 46 Selector used for self-loading apps. */
+ LPVOID hRsrcMap; /* 48 HRSRC 16->32 map (for 32-bit modules) */
+ HANDLE fd; /* 4c handle to the binary file */
+} NE_MODULE;
+
/* this structure is always located at offset 0 of the DGROUP segment */
typedef struct
{