Release 950319
[wine] / include / dlls.h
1 /* $Id: dlls.h,v 1.2 1993/07/04 04:04:21 root Exp root $
2  */
3 /*
4  * Copyright  Robert J. Amstadt, 1993
5  */
6
7 #ifndef DLLS_H
8 #define DLLS_H
9
10 #define MAX_NAME_LENGTH         64
11
12 typedef struct resource_name_table
13 {
14     struct resource_name_table *next;
15     unsigned short type_ord;
16     unsigned short id_ord;
17     char id[MAX_NAME_LENGTH];
18 } RESNAMTAB;
19
20 struct ne_data {
21     struct ne_header_s *ne_header;
22     struct ne_segment_table_entry_s *seg_table;
23     unsigned short *selector_table;
24     char *lookup_table;
25     char *nrname_table;
26     char *rname_table;
27     RESNAMTAB *resnamtab;
28 };
29
30 struct pe_data {
31         struct pe_header_s *pe_header;
32         struct pe_segment_table *pe_seg;
33         struct PE_Import_Directory *pe_import;
34         struct PE_Export_Directory *pe_export;
35         struct PE_Resource_Directory *pe_resource;
36         int resource_offset; /* offset to resource typedirectory in file */
37 };
38
39 struct w_files
40 {
41     struct w_files  * next;
42     char * name;   /* Name, as it appears in the windows binaries */
43     char * filename; /* Actual name of the unix file that satisfies this */
44     int fd;
45     unsigned short hinstance;
46     int initialised;
47     struct mz_header_s *mz_header;
48     struct ne_data *ne;
49     struct pe_data *pe;
50 };
51
52 extern struct  w_files *wine_files;
53
54 #define DLL     0
55 #define EXE     1
56
57 #define DLL_ARGTYPE_SIGNEDWORD  0
58 #define DLL_ARGTYPE_WORD        1
59 #define DLL_ARGTYPE_LONG        2
60 #define DLL_ARGTYPE_FARPTR      3
61 #define DLL_MAX_ARGS            16
62
63 #define DLL_HANDLERTYPE_PASCAL  16
64
65 struct dll_table_entry_s
66 {
67     /*
68      * Relocation data
69      */
70     unsigned int selector;      /* Selector to access this entry point    */
71     void *address;              /* Offset in segment of entry point       */
72
73     /*
74      * 16->32 bit interface data
75      */
76     char *export_name;
77     void *handler;              /* Address of function to process request */
78     char n_args;                        /* Number of arguments passed to function */
79     short conv_reference ; /* reference to Argument conversion data  */
80 #ifdef WINESTAT
81     int used;                   /* Number of times this function referenced */
82 #endif
83     
84 };
85
86 struct dll_name_table_entry_s
87 {
88     char *dll_name;
89     struct dll_table_entry_s *dll_table;
90     int dll_table_length;
91     int dll_number;
92     int dll_is_used;   /* use MS provided if set to zero */
93 };
94
95 extern struct dll_table_entry_s KERNEL_table[];
96 extern struct dll_table_entry_s USER_table[];
97 extern struct dll_table_entry_s GDI_table[];
98 extern struct dll_table_entry_s WIN87EM_table[];
99 extern struct dll_table_entry_s MMSYSTEM_table[];
100 extern struct dll_table_entry_s SHELL_table[];
101 extern struct dll_table_entry_s SOUND_table[];
102 extern struct dll_table_entry_s KEYBOARD_table[];
103 extern struct dll_table_entry_s WINSOCK_table[];
104 extern struct dll_table_entry_s STRESS_table[];
105 extern struct dll_table_entry_s SYSTEM_table[];
106 extern struct dll_table_entry_s TOOLHELP_table[];
107 extern struct dll_table_entry_s MOUSE_table[];
108 extern struct dll_table_entry_s COMMDLG_table[];
109 extern struct dll_table_entry_s OLE2_table[];
110 extern struct dll_table_entry_s OLE2CONV_table[];
111 extern struct dll_table_entry_s OLE2DISP_table[];
112 extern struct dll_table_entry_s OLE2NLS_table[];
113 extern struct dll_table_entry_s OLE2PROX_table[];
114 extern struct dll_table_entry_s OLECLI_table[];
115 extern struct dll_table_entry_s OLESVR_table[];
116 extern struct dll_table_entry_s COMPOBJ_table[];
117 extern struct dll_table_entry_s STORAGE_table[];
118
119
120 extern unsigned short KERNEL_offsets[];
121 extern unsigned short USER_offsets[];
122 extern unsigned short GDI_offsets[];
123 extern unsigned short WIN87EM_offsets[];
124 extern unsigned short MMSYSTEM_offsets[];
125 extern unsigned short SHELL_offsets[];
126 extern unsigned short SOUND_offsets[];
127 extern unsigned short KEYBOARD_offsets[];
128 extern unsigned short WINSOCK_offsets[];
129 extern unsigned short STRESS_offsets[];
130 extern unsigned short SYSTEM_offsets[];
131 extern unsigned short TOOLHELP_offsets[];
132 extern unsigned short MOUSE_offsets[];
133 extern unsigned short COMMDLG_offsets[];
134 extern unsigned short OLE2_offsets[];
135 extern unsigned short OLE2CONV_offsets[];
136 extern unsigned short OLE2DISP_offsets[];
137 extern unsigned short OLE2NLS_offsets[];
138 extern unsigned short OLE2PROX_offsets[];
139 extern unsigned short OLECLI_offsets[];
140 extern unsigned short OLESVR_offsets[];
141 extern unsigned short COMPOBJ_offsets[];
142 extern unsigned short STORAGE_offsets[];
143
144
145 extern unsigned char KERNEL_types[];
146 extern unsigned char USER_types[];
147 extern unsigned char GDI_types[];
148 extern unsigned char WIN87EM_types[];
149 extern unsigned char MMSYSTEM_types[];
150 extern unsigned char SHELL_types[];
151 extern unsigned char SOUND_types[];
152 extern unsigned char KEYBOARD_types[];
153 extern unsigned char WINSOCK_types[];
154 extern unsigned char STRESS_types[];
155 extern unsigned char SYSTEM_types[];
156 extern unsigned char TOOLHELP_types[];
157 extern unsigned char MOUSE_types[];
158 extern unsigned char COMMDLG_types[];
159 extern unsigned char OLE2_types[];
160 extern unsigned char OLE2CONV_types[];
161 extern unsigned char OLE2DISP_types[];
162 extern unsigned char OLE2NLS_types[];
163 extern unsigned char OLE2PROX_types[];
164 extern unsigned char OLECLI_types[];
165 extern unsigned char OLESVR_types[];
166 extern unsigned char COMPOBJ_types[];
167 extern unsigned char STORAGE_types[];
168
169 #define N_BUILTINS      23
170
171 #endif /* DLLS_H */
172
173