Release 941030
[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     struct segment_descriptor_s *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 typedef struct dll_arg_relocation_s
55 {
56     unsigned short dst_arg;     /* Offset to argument on stack          */
57     unsigned char src_type;     /* Argument type                        */
58 } DLL_ARG;
59
60 #define DLL     0
61 #define EXE     1
62
63 #define DLL_ARGTYPE_SIGNEDWORD  0
64 #define DLL_ARGTYPE_WORD        1
65 #define DLL_ARGTYPE_LONG        2
66 #define DLL_ARGTYPE_FARPTR      3
67 #define DLL_MAX_ARGS            16
68
69 #define DLL_HANDLERTYPE_PASCAL  16
70 #define DLL_HANDLERTYPE_C       17
71
72 struct dll_table_entry_s
73 {
74     /*
75      * Relocation data
76      */
77     unsigned int selector;      /* Selector to access this entry point    */
78     void *address;              /* Offset in segment of entry point       */
79
80     /*
81      * 16->32 bit interface data
82      */
83     char *export_name;
84     void *handler;              /* Address of function to process request */
85     int handler_type;           /* C or PASCAL calling convention         */
86 #ifdef WINESTAT
87     int used;                   /* Number of times this function referenced */
88 #endif
89     int n_args;                 /* Number of arguments passed to function */
90     DLL_ARG args[DLL_MAX_ARGS]; /* Argument conversion data               */
91 };
92
93 struct dll_name_table_entry_s
94 {
95     char *dll_name;
96     struct dll_table_entry_s *dll_table;
97     int dll_table_length;
98     int dll_number;
99 };
100
101 extern struct dll_table_entry_s KERNEL_table[];
102 extern struct dll_table_entry_s USER_table[];
103 extern struct dll_table_entry_s GDI_table[];
104 extern struct dll_table_entry_s UNIXLIB_table[];
105 extern struct dll_table_entry_s WIN87EM_table[];
106 extern struct dll_table_entry_s MMSYSTEM_table[];
107 extern struct dll_table_entry_s SHELL_table[];
108 extern struct dll_table_entry_s SOUND_table[];
109 extern struct dll_table_entry_s KEYBOARD_table[];
110 extern struct dll_table_entry_s WINSOCK_table[];
111 extern struct dll_table_entry_s STRESS_table[];
112 extern struct dll_table_entry_s SYSTEM_table[];
113 extern struct dll_table_entry_s TOOLHELP_table[];
114 extern struct dll_table_entry_s MOUSE_table[];
115 extern struct dll_table_entry_s COMMDLG_table[];
116
117 #define N_BUILTINS      15
118
119 #endif /* DLLS_H */